TRichEdit - String gefunden an die Positon + 10 Zeilen weiter gehen
-
hallo ;
ich gebe mal eine beispiel wie die logdatei aufgebaut ist:2005-11-08 12:09:28: Remote open task for Study Instance UID 1.2.276.0.24.276.121315825.4.0.1 2005-11-08 12:09:30: Opening Hanging "CT Standard" for" ******,*****, 1511621, 1945-07-18, 1.2.276.0.24.276.121315825.4.0.1, " 2005-11-08 12:12:08: Failed to create GL context: Ungültiges Handle für Gerätekontext (DC). (591) 2005-11-08 12:20:05 (MD-JADE) [3448]: Using workspace "Default" 2005-11-08 12:20:05: Allocated 1024 MB of virtual memory at 0x10020000 2005-11-08 12:20:06: Starting MD-JADE v2.14 SR5 - Build 96 (Mo 24.10.2005). 2005-11-08 12:20:06: Current workspace Default on host MP276JWB 2005-11-08 12:20:06: ####### Unclean exit from previous MD-JADE session ###### 2005-11-08 12:20:12: Received request for remote login of user hel 2005-11-08 12:20:12: Remote login of user hel 2005-11-08 12:20:12: Using workspace "Default" 2005-11-08 12:20:13: Logging in user hel@MP276JWB [Default]wie du siehst ist das programm gecrasht.
nun muss ich die letzen 4 zeilen zum beispiel VOR dem crash ausgeben. das tue ich in der listbox. somit hat der user die tatsächlichen abstürze vor sich.
wenn er nun den error anklickt springt er da auch hin^^es sind in der listbox auch die ganzen zeilen wie oben ausgegeben
------------------------------------------------------------
IndexOf() - kann es sein das das voll müll ist? wenn der error so in zeile 40.000 liegt, dauert das so elendich lange. habe es in einer schleife gemacht und das geht viel schneller

-
dern00b schrieb:
IndexOf() - kann es sein das das voll müll ist? wenn der error so in zeile 40.000 liegt, dauert das so elendich lange. habe es in einer schleife gemacht und das geht viel schneller

Das glaube ich nicht. Du hast garantiert die Schleife über die StringList gemacht, aber das IndexOf des RichEdit verwendet. Wenn Du das IndexOf der StringList verwendest, ist das nochmal 50% schneller, als die Schleife.
Operationen auf dem RichEdit sind fürchterlich langsam, das ist richtig.
-
naja ich gfehe jetzt die stringlist durch :
for(int i=0 ; i<RichEditText->Count ; i++) { if(RichEditText->Strings[i] == ErrorString) { int sichtbare_zeilen = Ausgabe->Height / 12; Ausgabe->SelStart = Ausgabe->Perform(EM_LINEINDEX, 0, 0); Ausgabe->Perform(EM_SCROLLCARET, 0, 0); Ausgabe->SelStart = Ausgabe->Perform(EM_LINEINDEX, i + sichtbare_zeilen / 2, 0); Ausgabe->Perform(EM_SCROLLCARET, 0, 0); Ausgabe->SelStart = Ausgabe->Perform(EM_LINEINDEX, i, 0); Ausgabe->SelLength = Ausgabe->Lines->Strings[i].Length(); Ausgabe->Perform(EM_SCROLLCARET, 0, 0); delete RichEditText; return; } }so ist dat doch schick
wobei oben die zeile mit dem teilen noch ausgebessert werden muss
-
Must du unbedingt die ganze Logdatei im RichEdit anzeigen ?
Oder reicht ein Ausschnitt um den ausgewählten Fehler ?
-
naja - es ist sinnvoll. denke ich.
weil sonst muss ich sie ja auch jedesmal neu laden^^also das ist schon ok so - mein betreuer (der chefprogarmmierer) hat da auch nix groß gegen gesagt
-
Du musst sie nicht immer neu laden.
Du lädst die Logdatei in eine normale TStringList (Wo natürlich Texteigenschaften flöten gehen) und suchst darin deinen Fehler.
Dann kopierst du alle Fehler (z.B. +100 -100 um den gefundenen) in die RichEdit.
Das dürfte erheblich schneller sein.
-
Ich habs gerade mal ausprobiert. Das Suchen und Springen in Zeile 50000 dauert 91 ms unter Verwendung einer Schleife und 34 ms unter Verwendung von IndexOf (jeweils über eine TStringList).
@remark: Dann mußt Du ihm jetzt auch erklären, wie man das macht.
-
dann kann der suer aber nur 100 zeilen scrollen
ist das sinnvoll?
ich meine die müssen oft auch weiter weil dadurch analysieren die ihre programmabstürze.habe das eben besprrochen die meinten auch net das das so gut wäre.
-
Joe_M. schrieb:
Ich habs gerade mal ausprobiert. Das Suchen und Springen in Zeile 50000 dauert 91 ms unter Verwendung einer Schleife und 34 ms unter Verwendung von IndexOf (jeweils über eine TStringList).
@remark: Dann mußt Du ihm jetzt auch erklären, wie man das macht.
wie etstet man denn zeiten von sowas?
-
dern00b schrieb:
wie etstet man denn zeiten von sowas?
siehe sein erstes Posting hier
mfg
BigNeal
-
ja, aber schon das habe ich net verstanden.
da sieht man mal wie schloecht die TAI ausbildung ist. ich bin odrt klassenbester in der programmierung und auch hier im praktikum hatte ich manchmal probleme. aber das kommt warscheinlich alles mit der zeit
-
Ich hab es in diesem Fall mit GetTickCount() gemacht
int start; int ende; int dauer; start = GetTickCount(); // zu messende Anweisungen ende = GetTickCount(); dauer = ende - start; // dauer enthält die Zeitspanne in Millisekunden
-
oha - das ja ne einfache funktion - aber die war mir noch unbekannt. und wieder hinzugelernt

-
dern00b schrieb:
oha - das ja ne einfache funktion - aber die war mir noch unbekannt. und wieder hinzugelernt

in der Hilfe kann man ganz gut funktionen nachschlagen die man sieht und noch nicht kennt

mfg
BigNeal
-
+-100 wahr auch nur ein Beispiel.
Kannst auch +-1000 nehmen bzw. kannst das auch frei vom User einstellbar machen.
Hab da mal sowas gebastelt.
Bei 40000 Zeilen und +-1000 dauert das ca 0,25 Sek.
Bei +-100 so 0,06 Sek.
-
naja aber mann muss den namen ja haben.
also ich habe mich schonmal ne halbe nacht mit der hilfe beschäftigt und habe da auch viele spielereien kennengelernt
ich bin ja auch lernwillig und fleißig was das angeht.
dafür habe ich in technische informatik ne 3 in netzwerktechnik ne 4 und werde wohl das zweite cisco-zertifikat nicht schaffen
dafür programmierung theorie ne eins und praxis erst recht ne 1+ mit sternchen und auszeichnung.
bsp verkettung: aufgabe die autoschlange realisieren - bei mir kriegt jedes auto dann noch kennzeichen :P. ich werde in der scvhule net wirklich gefordert. ich lerne durch EUCH!!1D A N K E

-
@Joe M.
Erstmal sehen ob das was für ihn ist.
-
remark schrieb:
+-100 wahr auch nur ein Beispiel.
Kannst auch +-1000 nehmen bzw. kannst das auch frei vom User einstellbar machen.
Hab da mal sowas gebastelt.
Bei 40000 Zeilen und +-1000 dauert das ca 0,25 Sek.
Bei +-100 so 0,06 Sek.dann muss ich den ganzen etxt inna SL speichern.
ich habe aber auch ein multiselect - sprich der user kann mehrere files gleichzeitig analysieren und kriegt dann die fehler hintereinander ausgegeben.
dann mache ich das so - dass der solange in der listbox nach oben geht bis er den dateinamen findet , den ich dort angebe, dann das file lädt, und dann in dem file sucht

bestimmt net sehr effektiv^^
-
dann muss ich den ganzen etxt inna SL speichern.
Na und. Jetzt lädst du auch alles ins RichEdit.
Könnte dir das mal mailen, damit du siehst was ich meine.
-
dern00b schrieb:
naja aber mann muss den namen ja haben.
also ich habe mich schonmal ne halbe nacht mit der hilfe beschäftigt und habe da auch viele spielereien kennengelernt
den Namen das hattest du ja auch vom code von Joe.. war ja ein auffälliges muster, wenn du den code mal kurz studiert hättest.
mfg
BigNeal