zeilenweise einlesen
-
hallo,
jetzt möchte ich aus der if anweisung raus zeilenweise einlesen, aber nur die zeile wo z.B. die erste zahl eine zwei ist.....
leider hab ich keine ahnung wie das funktionieren soll, kann mir jemand von euch helfen
da shab ich schon mal:if(ffile.Open(name, CFile::modeReadWrite)) { char buf[1030]; DWORD haha = ffile.GetLength(); ffile.ReadString(buf,5); ffile.Close(); }aber das wird es wohl nicht so richtig sein, oder....
-
Servus,
mit CFile kannst du eine Datei nur Sequentiell auslesen. d.h. Nur Zeichen für Zeichen. Schaue dir mal die Klasse CStdioFile an. Damit kannst du Zeilenweise die Datei auslesen.
Noch ein Tipp am Rande. Lasse den Speicher des Buffers immer dynamisch festlegen. z.B.char cBuffer[256]; memset(cBuffer,0,sizeof(cBuffer));Sonst könnte es dir wie mir ergehen. Irgendwann habe ich mal einen char 256 festgelegt der mir im Laufe des Programms irgendwann Werte und Variablen verhunzt hat. Dieser weg ist sicherer.
Hellsgore
-
ja gut ich kenne schon Read-/WriteString aber wie les ich damit zeilen weise aus, getline geht doch nicht oder....
-
Ich glaube nicht das du das kennst, sonst wüsstest du das man damit Zeilenweise auslesen kannst.
Pass auf:CStdioFile cfFile( "FrissdieKatze.txt", CFile::modeRead); CString strKatze; cfFile.ReadString( strKatze );nur zum Bleistift. Musst einfach mal damit ein wenig herumspielen. Dann kommst du schon auf deine Lösung.
Hellsgore
-
ich möchte aber das der erste teil der in der zeile der datei steht nicht beachtet wird und der rest der zeile auf zweimal ausgeslesn wird.
Datei:1 156 123 2 948 468 . .jetzt soll gesucht werden bis er im ersten teil der datei eine 1 findet, dann soll er den rest in vari1 und vari2 schreiben....
-
Schau Dir mal fstream und operator>> an.
-
kannst du mir mal ein kleines beispiel geben wie ich die verwende um auf das ergebnis zu kommen, was ich gerne hätte??????
-
monetan sieht es so aus,
es liest halt eben noch nicht so ein wie es soll:
CStdioFile ffile; char buf[256]; if(ffile.Open(name, CFile::modeReadWrite)) { MessageBox(name); DWORD haha = ffile.GetLength(); ffile.ReadString(buf,haha); m_dparameterdlg.m_strknot1 = buf+1 ; ffile.ReadString(buf,haha); m_dparameterdlg.m_strknot2 =buf+7; MessageBox(buf); ffile.Close(); m_dparameterdlg.DoModal(); } if(!ffile.Open(name,CFile::modeReadWrite)) { MessageBox("Fehler beim öffen/lesen der Datei"); OnOK(); }
-
Servus gaga,
was liest er denn aus? Gib uns mal ein Ergebnis..
Hellsgore
-
hi,
das ergebnis wird in zwei eingabefeldern ausgegeben, m_strknot1+m_strknot2,
komischer weise gibt er in jedem feld die richtige ausgabe aus mit einem | dahinter, aber auch nur solange das textfile so aussieht 1 156
123
2 948
468
, wenn es so aussieht wie aussehen soll dann gibt er im einem feld die zeile eins aus und im zweiten feld die zeile zwei, jeweils komplett aus.und wenn ich nach der zweiten zeile suchen lass, sprich 2 948 468
macht er gar nichts......
-
das | markiert das zeilenende, und wird, warum auch immer, immer mit eingelesen.Ich habe den buffer schon verkleinert hat aber nichts gebracht...
weiss jemand wie ich das weg bekomme??ich habe ein bisschen gestöbert und bin auf :
extern CFile cfile; LONG lOffset = 1000, lActual; lActual = cfile.Seek( lOffset, CFile::begin );gestossen, leider kann ich so wenig mit anfangen , kann mir vieleicht jemand sagen ob ich das verwenden kann und vorallem wie???
DAnke
-
kann mir keiner helfen ????
Hab das mit dem CFile wieder zerschlagen oder kann mich jemand vom gegenteil überzeugen
hab halt nur das prob mit dem einlesen bei readstring.
aber vielleicht kann mich ja jemand aufklären......