Wie Log-File auswerten?
-
Hallo Zusammen,
brauche eure Hilfe.
Also ich habe da ein Log-File im .txt Format, welches ich Auswerten möchte
Log-File:
08-20-2005 11:11:53.040 - Datei: C:\WINDOWS\system32\tapisrv.dll, Version 5.1.2600
08-20-2005 11:11:53.040 - Datei: C:\WINDOWS\system32\unimdm.tsp, Version 5.1.2600
08-20-2005 11:11:53.040 - Datei: C:\WINDOWS\system32\unimdmat.dll, Version 5.1.2600
08-20-2005 11:11:53.040 - Datei: C:\WINDOWS\system32\uniplat.dll, Version 5.1.2600
08-20-2005 11:11:53.060 - Datei: C:\WINDOWS\system32\drivers\modem.sys, Version 5.1.2600
08-20-2005 11:11:53.070 - Datei: C:\WINDOWS\system32\modemui.dll, Version 5.1.2600Ich lese nun dieses txt-file z.B. in eine Memo Komponente ein.
Nun zu meiner Frage:
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 ?Hat jemand eine Idee bzw. ein Beispiel für mich?
mfg
benno
-
Du kannst die einzelnen Zeilen mit ner Schleife durchlaufen lassen und dann mit SubString nach deinen 'suchstring' suchen lassen oder auch mit xxx.pos die position ermitteln wenn der String der ganzen Zeile bekannt ist kannst Du auch IndexOf benutzen . Beispiele gibt es dafür in der Online Hilfe. Das abtrennen vom gesamten String geht auch gut mit SubString. So kannst Du ihn dann auch an das z.B. Editfeld übergeben.
-
Hallo
wenn du die Datei in der Logdatei finden willst (und nicht im Filesystem) brauchst du z.B. TStringList zum Laden der Datei und die AnsiString-methoden zum Bearbeiten des gelandenen Inhaltes, insbesonder Pos() und SubString().
bis bald
akari
-
Du kannst die einzelnen Elemente am " " aufteilen beispielsweise mit
http://www.marquardtnet.info/cecke/quickies.1/1_quicky_01.html
Das Ergebnis ist eine TStringList über die du die einzelnen Elemente weiterbearbeiten kannst
Also 1 TStringList zum einlesen
eine weitere für das einlesen
-
hmm ich versteh das net will genau das gleiche wie du kann denn keiner mal ein nahes beispiel lifern damit ich auch weiss was was ist

-
habt ihr pillen geschlcukt? zähle mal wie viele zeichen der timestamp hat + leerzeichen. ab da beginnt dein pfad. also machste nen substring vond er positiona n bis string.length().
also hohl muss man sein... ich dachte schon dern00b wäre dumm. aber das ist kindisch
-
klasse das hilft, blöde rummeckern
-
TSTringList* LogFIle = new TSTringList; LogFile->LoadFromFile(PFAD.c_str()); for(int i=0 ; i<LogFile.Lenth ; i++) { AnsiString sub = LogFile->Strings[i].SubString(33,LogFile->Strings[i].Length); Memo1->Lines->Add(substring); }ungetesteter scheiß mit rechtschreibfehler - ich habe hier auch andereszu tun - aber es ist fies wenn man keine hilfe bekommt. ich kenne das problem
*bussi*tim
-
@masterfu: Statt hier so wirres, halbfalsches Zeug zu posten, solltest Du dich mal auf deine Probleme konzentrieren und dich mal intensiver mit der Hilfe des HCB auseinandersetzen.
AnsiString sub; TSTringList* LogFile = new TSTringList(); LogFile->LoadFromFile(PFAD); Memo1->Lines->BeginUpdate(); // beschleunigt Bearbeitung, bei vielen Zeilen for(int i=0 ; i <LogFile->Count ; i++) { sub = LogFile->Strings[i].SubString(33,LogFile->Strings[i].Length()); Memo1->Lines->Add(sub); } Memo1->Lines->EndUpdate();
-
danke joe das genau das was ich brauche ich bekomme allerdings Fehler
[C++ Fehler] Unit1.cpp(51): E2451 Undefiniertes Symbol 'TSTringList'
[C++ Fehler] Unit1.cpp(51): E2451 Undefiniertes Symbol 'LogFile'
[C++ Fehler] Unit1.cpp(51): E2303 Typname erwartet
[C++ Fehler] Unit1.cpp(51): E2379 In Anweisung fehlt ;naja bin halt neu auf dem gebiet c++

was habe ich falsch gemacht
memo1 habe ich
logfile was ist das ?ich weiss sowieso nicht richtig was eine stringlist is, vllt kann mir das ja einer erklären da wäre nett

-
Hallo
Schreibfehler. Es muß TStringList heißen, wie ein Blick in die BCb-Hilfe auch gezeigt hätte.
bis bald
akari
-
ja joey, ich ahbe es schnell hingefluscht, weil es hat ja kein anderer gemacht. der fred ist schon 5 tage alt. wie gesagt - scheiß feheler, einfach runtergerattet, ich muss hier selber arbeiten. wenigstens hatte er einen anhaltspunkt

-
also die felher sind weg hatte 1:1 kopiert und nicht darauf geachtet das er TSTringlist icht mag wegen dem großen T

-
azad187 schrieb:
also die felher sind weg hatte 1:1 kopiert und nicht darauf geachtet das er TSTringlist icht mag wegen dem großen T

wenn du dich net gleich auf den code gestürzt hättest, wüßtest du das ich geschrieben ahbe das das ruchizucki ging^^
-
@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.