Autor |
Beitrag |
Niko S.
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 27.01.07 16:17
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EStackOverflow aufgetreten. Meldung: 'Stack-Überlauf'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure getresname(y1,count: Integer; substr,substr2: String); begin INC(y1); if (Form1.StringGrid1.Cells[0,y1] = substr2) then Form1.StringGrid1.Cells[22,y1] := substr; if (Form1.StringGrid1.Cells[0,y1] <> substr2) then getresname(y1,count,substr,substr2); end; |
Markierte Zeile:
Delphi-Quelltext 1:
| if (Form1.StringGrid1.Cells[0,y1] = substr2) then Form1.StringGrid1.Cells[22,y1] := substr; |
So das ist nun mein Problem ich kreig das nicht weg die variablen stimmen irgendwann überein trozdem hört der nicht auf und erzeugtn n overflow  Ich weis nid mehr weiter.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure getresname(y1,count: Integer; substr,substr2: String); begin INC(y1); if (Form1.StringGrid1.Cells[0,y1] = substr2) then Form1.StringGrid1.Cells[22,y1] := substr; if (Form1.StringGrid1.Cells[0,y1] <> substr2) and (y1<count) then getresname(y1,count,substr,substr2); end; |
So funktioniert es das problem is nur das es relativ lange braucht .... (um eine größere datei zu zerlegenm und prüfen dauerts nicht mal ne halbe sekunde und heir 3 sekunden ...)
Moderiert von Gausi: Delphi-Tags repariert.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.01.07 16:41
Für mich stellt sich hier die Frage, warum du das so umständlich machst? Ich meine, das geht doch mit einer Schleife viel effizienter.
Aber jedenfalls funktioniert es bei mir mit deinem ersten Quelltext, wenn der Eintrag existiert. Und egal ob er existiert oder nicht, geht es mit dem zweiten Quelltext...
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 27.01.07 17:17
weil ich festgestellt hab das eine schleife mehr zeit braucht als eine rekursive fnuction oder procedure.
Bei mir geht der erste quellcode in eine endlosschleife ... und der zweite ist recht langsam 
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.01.07 17:22
Also dann stimmt da was nicht. Wenn das richtig geschrieben ist, dann ist eine Schleife auf jeden Fall schneller!
Die Geschwindigkeitsprobleme kann ich nicht nachvollziehen, bei mir gehts gut, dass es aber bei einer Rekursion schiefgehen kann, wenn du extrem viele Einträge hast, ist richtig...
Aber warum die Schleife bei dir langsamer war? Hmm...
Es wäre wohl am einfachsten wenn du mal ein Beispielprojekt anhängst, wo auch so viele Daten drin sind, wie es bei dir sind. Und wo die Performanceprobleme/ Fehler zu spüren/vorhanden sind. Dann kann ich mal nachsehen, woran das liegt.
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 27.01.07 19:22
Ich habs so gelöst das Ich aus 2 daten eine gemacht hab und das halt vorher "convertiert" hab.
Nun geht es prima ladezeit kann man sagen gleich null bei 0,06~.
Da es über 2200 zeilen sind macht sich meine rekursive lösung viel schneller die andere würde ca ne sekunde oder 2 brauchen (for schleife) Nun passt aber alles Trozdem danke für deine mühe .
|
|
|