Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

CStdioFile und ReadString

Empfohlene Antworten

Veröffentlicht

Hallo,

ich lese eine ASCI Datei ein mit CStudioFile und RedString

Die Datei sieht so aus:

0001#123 #456 #00123 <- hier wir durch 0x0A Sprung in neue Zeile

0001#122 #453 #00123

Jetzt wenn ich die zweite Zeile auslesen will kriege ich statt 0001#122 #453 #00123

001#122 #453 #00123 es wird also ein 0 abgeschnitten.

Hat jemand eine die wie ich es lösen kann??

Hat jemand eine die wie ich es lösen kann??
Ohne deinen Code zu sehen, vermutlich nicht. Wahrscheinlich machst du beim Einlesen etwas falsch.

Übrigens: Die Dinger heißen CStdioFile und ReadString. Ein U zuviel, ein A zuwenig. Ich passe den Threadtitel mal für dich an.

  • Autor
Ohne deinen Code zu sehen, vermutlich nicht. Wahrscheinlich machst du beim Einlesen etwas falsch.


CStdioFile file;
CString sinput;
try
{
file.Open(path,CFile::modeRead);
while (file.GetPosition() < m_file_sa45.GetLength()-1)
{
file.ReadString(sinput);
}

}catch(CFileException* fe )
{
file.Close();
fe->GetErrorMessage(szCause,255);
fehler.Format("Fehler:%d bei öffnen der Datein %s",szCause,
fe->strFileName);
AfxMessageBox(fehler,MB_ICONERROR);
fe->Delete();
}
file.Close();
[/PHP]

.

Übrigens: Die Dinger heißen CStdioFile und ReadString. Ein U zuviel, ein A zuwenig. Ich passe den Threadtitel mal für dich an.

danke

  • Autor
Und wo zeigt sich da der verkürzte String?

Einfach das zweite lauf in der schleife gib mir in sinput

001#122 #453 #00123 statt 0001#122 #453 #00123 ;(

Du machst ja gar nichts mit den Daten.

Nein nein ich mache schon was, allerdings will ich hier nicht den ganzem Code zeigen ;)

Einfach das zweite lauf in der schleife gib mir in sinput

001#122 #453 #00123 statt 0001#122 #453 #00123 ;(

Was heißt "gib"? Siehst du das im Debugger? Mach da doch bitte mal eine MessageBox hin.

Nein nein ich mache schon was, allerdings will ich hier nicht den ganzem Code zeigen ;)
Und was, wenn der Fehler in dem Teil steckt, den du hier nicht zeigst?
  • Autor

Und was, wenn der Fehler in dem Teil steckt, den du hier nicht zeigst?

Ausgeschlossen, denn bevor ich was mit den string anfange wir er um 1 kürzer

Jetzt kommt aber der Hammer:

Wenn ich die Datei so lese funktioniert alles perfekt:eek


while(file.ReadString(sinput))
{
}
[/PHP]

Es klappt übrigens auch mit GetPosition, wenn du die Dateigröße nur einmal vorher ermittelst. Spar dir doch die zwei Funktionsaufrufe pro Zeile und mach's nur mit ReadString ;)

Offenbar kommt CFile/CStdioFile durcheinander, wenn du andauernd in einer Datei mit Unix-Zeilenumbrüchen herumspringst.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.