C++ Problem beim Auswerten von *.log Datein
Hi leute,
ich brauche wiedermal eure hilfe. Folgendes Problem liegt an:
Ich habe Logdatein mit viel Text welcher ungefair so aussieht:
00:15:28:218 --> Kommando Start Höhenstandmessung an DPP
00:15:28:250 --> Bit Kommando Start Höhenstandmessung
00:15:28:250 --> Kommando Start Höhenstandmessung
00:15:28:250 --> Kommando Start Höhenstandmessung an DPP
00:15:28:265 --> Starte Höhenmessung
00:15:34:453 --> Höhenstandsmessung Werte: 2878,92423105742
nun muss ich aus dieser log Datei eine Bestimmte nummer Rausfiltern und zu der Nummer ein Error zuweisen.
Also qausi. Ich starte eine Messung, nach der Messung kommen messwerte und manchmal kann es passieren dass da ein Error kommt.
Da die Log Datei nicht von meinem Programm ist, kann ich sie nicht nach meinen Wünschen anpassen. Damit zb bei erfolgreicher messung da stand "Messung erfolgreich"
Aktuell habe ich folgenden QUellcode:
ich habe da irgendwie ein Dummen denkfehler drin. ich komme immer in das else der zweiten bedingung rein bei jeder zeile aber das muss ignoriert werden. es soll im grunde NUR dann einen String zusammensetzen, wenn ich die Nummer habe und das ganze darf nur einmal pro nummer zusammengesetzt werden. so dass ich später so eine ausgabe in meiner memo haben muss
Nr \t IO \t NIO \n
123 \t 1 \t 0 \n <----- diese Nummer hat kein fehler
456 \t 0 \t 1 \n <----- diese Nummer hat ein Fehler
am ende Muss ich dann wissen aha die Nummer sowieso hatte soviele Fehler
vllt könnt ihr mir da mal weiterhelfen(Zu viel mit PHP in Letzter zeit Programmiert und nun kann ich mit C++/Borland nciht umgehen)
MFG
ich brauche wiedermal eure hilfe. Folgendes Problem liegt an:
Ich habe Logdatein mit viel Text welcher ungefair so aussieht:
00:15:28:218 --> Kommando Start Höhenstandmessung an DPP
00:15:28:250 --> Bit Kommando Start Höhenstandmessung
00:15:28:250 --> Kommando Start Höhenstandmessung
00:15:28:250 --> Kommando Start Höhenstandmessung an DPP
00:15:28:265 --> Starte Höhenmessung
00:15:34:453 --> Höhenstandsmessung Werte: 2878,92423105742
nun muss ich aus dieser log Datei eine Bestimmte nummer Rausfiltern und zu der Nummer ein Error zuweisen.
Also qausi. Ich starte eine Messung, nach der Messung kommen messwerte und manchmal kann es passieren dass da ein Error kommt.
Da die Log Datei nicht von meinem Programm ist, kann ich sie nicht nach meinen Wünschen anpassen. Damit zb bei erfolgreicher messung da stand "Messung erfolgreich"
Aktuell habe ich folgenden QUellcode:
|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
//Datei Oeffnen FILE* datei = fopen(dName.c_str(),"a+"); do { //Zeile Holen aus Datei fgets(buff,255,datei); //Pruefe ob der String VinNr vorhanden ist if(strstr(UpperCase(buff).c_str(),UpperCase("VinNr").c_str()) != NULL){ // wenn vorhanden ermittle laenge len = strlen(buff) - 28; //kopier den buffer String an AnsiString um die Nummer zu finden strncpy(aString, buff+27, len); //An die Letzte stelle \0 anhaengen aString[len] = '\0'; //an Ausgabe String den String anhangen aText += aString; } //Pruefe ob string Fehler vorhanden ist if(strstr(UpperCase(buff).c_str(),UpperCase("Fehler Höhenmessung").c_str()) != NULL ){ // wenn ja, dann setze 0 IO 1 NIO - aText += "\t0\t1\-\n\0"; }else{ //sonst 1 IO 0 NIO aText +="\t1\t0\-\n\0"; } }while(!feof(datei)); fclose(datei); //Den zusammengebauten string in Memo ausgeben MainForm->Memo1->Text = aText; |
ich habe da irgendwie ein Dummen denkfehler drin. ich komme immer in das else der zweiten bedingung rein bei jeder zeile aber das muss ignoriert werden. es soll im grunde NUR dann einen String zusammensetzen, wenn ich die Nummer habe und das ganze darf nur einmal pro nummer zusammengesetzt werden. so dass ich später so eine ausgabe in meiner memo haben muss
Nr \t IO \t NIO \n
123 \t 1 \t 0 \n <----- diese Nummer hat kein fehler
456 \t 0 \t 1 \n <----- diese Nummer hat ein Fehler
am ende Muss ich dann wissen aha die Nummer sowieso hatte soviele Fehler
vllt könnt ihr mir da mal weiterhelfen(Zu viel mit PHP in Letzter zeit Programmiert und nun kann ich mit C++/Borland nciht umgehen)
MFG
Mein kleines Projekt
-Cruel Online-
-Cruel Online-
Hat das einen Grund, warum du alles mit reinem C schreibst, und nicht z.B. die AnsiString klasse von Borland verwendest?
Ich hab (zum Glück) lange nix mehr mit Borland gemacht, bin mir aber sicher das man mit oben besagter Klasse recht einfach einen kleinen Parser schreiben kann.
Ich hab (zum Glück) lange nix mehr mit Borland gemacht, bin mir aber sicher das man mit oben besagter Klasse recht einfach einen kleinen Parser schreiben kann.
Aktuell nutze ich: Windows, Linux, MacOS X, Solaris...weil die Welt nicht nur S/W ist!
Blog
Blog
ja die anderen programmierer in der firma wollten es so(weil sie nichts anderes können) habe aber das problem behoben mit TStringList
MFG
MFG
Mein kleines Projekt
-Cruel Online-
-Cruel Online-
Ähnliche Themen
-
PHP »-
Captcha richtig oder Falsch
(16. Mai 2009, 12:07)
-
Archiv: Betriebssysteme »-
System bleibt bei manchen Datein stehen
(14. September 2003, 16:57)
-
FreeWebspace »-
[Frage] wbb datein uppen aber wo hin ??
(18. März 2003, 17:43)


