Wie Log-File auswerten?
-
@Mastefu trotzdem zu kurz gesprungen (oder deine Pillen trüben den Blick):
Das war die Anforderung:
Wie kann ich nun nach z.B. " C:\WINDOWS\system32\tapisrv.dll " suchen, und wenn dieses
gefunden wird, die sich dahinter befindende Versionsnummer z.B. in einem Edit Feld ausgeben ?Mit
AnsiString sub = LogFile->Strings[i].SubString(33,LogFile->Strings[i].Length);hast du den Dateinamen und wie kommst du nun an die gewünschte Versionsnummer?? Ahaa, Leerzeichen suchen und wieder extahieren?? Wie praktisch. Da erschien mein splitten doch angenehmer:
TStringList *teile=new TStringList();
for(int i=0 ; i <LogFile->Count ; i++)
{
split(teile,,LogFile->Strings[i].," ");
String Datei=teile->Strings[5];// Wenn ich mich nicht verzählt habe
String Version=teile->Strings[6];// Wenn ich mich nicht verzählt habe}
delete teile;
-
Christian. klar du hast recht. allerdings habe ich halt echt net die zeit hier denen das genau so zu coden wie sie es haben wollen. er hatte die SL ja nichtmal verstanden. und da seid tagen kein anderer drqauf einging habe ich es einfach getan, weil ich weiß wie es ist, wenn man keine hilfe hat

-
naja ich komme mein Ziel schon langsam näher allerdings kann ich keine Stellenagabe machen da die sich variert kann ich auch eine suche nach einem Wort machen was entahleten ist egal was for unt hinter steht also inetwa
sub = LogFile->Strings[i].SubString("*Fehler*",LogFile->Strings[i].Length());
oder geht sowas in der art nicht, denn ich will nur das er mir alle Fehler aus den Logfile in ein Memo ausgibt.
-
sorry falsch, hatte die 2. Seite nicht gesehen. lol
-
Und was ist an meinem Vorschlag schlecht??
TStringList *teile=new TStringList(); for(int i=0 ; i <LogFile->Count ; i++) { split(teile,,LogFile->Strings[i]," "); for(int x=0;x<teile->Count;x++) Memo1->Lines->Add(teile->Strings[x]); } delete teile;
-
Berichtigung:
split(teile,LogFile->Strings[i]," ");du hast in Teile alle Elemente drin und kannst diese durchsuchen, ausgeben, oder sonstwas machen.
-
ich kann deins leider nicht resten da er die split funktion nicht kennt brauch ich dafür noch ne .h datei ?
-
Die Funktion gibt es hier
http://www.marquardtnet.info/cecke/quickies.1/1_quicky_01.html
diese in die Header-Datei kopieren (außerhalb der Klasse).
ODER ODER
oben in die CPP-Datei vor TForm *....
ABER NUR EINS VON BEIDEN!!!
-
azad187 schrieb:
sub = LogFile->Strings[i].SubString("*Fehler*",LogFile->Strings[i].Length());
Um zu prüfen, ob sich ein bestimmtes Wort in einem String befindet, bietet sich die Funktion AnsiString::AnsiPos() an.
-
So habe jetzt soweit alles mit meiner logdatei fertig wie ich es haben möchte...
Nur noch eine sache0205 0
0211 0
0216 0
0139 1
0231 0
0240 0
0246 0
0258 0
0262 0
0271 0das steht z.b jetzt im Memo nach der Kürzung nun soll er mir im memo aber nur noch das angeben wo die 1 dahinter steht und da wo die 0 ist die Zeile gar nicht mit aufzählen
Wie mach ich das jetzt ?

-
wenn das letze zeichen keine 1 ist
ignorieren
wenn das letze zeichen eine eins ist
asugeben?
-
genau das will ich

-
Dann mach das doch. Verwende AnsiPos() um zu prüfen, ób das letzte Zeichen eine 0 oder 1 ist und füge es entsprechend ein.