| Autor |
Nachricht |
Mashalla
       
Beiträge: 47 Dabei seit: 18.07.2006
Windows 7 Professional Delphi 7 Enterprise, Turbo Delphi Explorer 2006
|
Implementierung der Levenshtein-Distanz-Berechnung, Programm schmiert bei der Zuweisung des Ergebnisses mit einem StackOverflow ab ... ich weiß nicht, warum -.-
Algo korrigiert, falls jmd braucht
Zuletzt bearbeitet von Mashalla am Di 16.02.10 15:12, insgesamt 3-mal bearbeitet
|

|
|
Gausi
       

Beiträge: 7461 Erhaltene Danke: 21 Dabei seit: 22.11.2002 Wohnort: Düsseldorf
Win XP, Win 7 D7 PE, RAD Studio 2009 Professional
|
Du setzt die Größe des Arrays auf X mal Y, greifst aber auch auf das Element mit Index X/Y zu. Das letzte Element in einem Array hat aber den Index X-1 bzw. Y-1. 
_________________ Oel ngati kameie.
|

|
|
Mashalla
       
(Threadstarter)
Beiträge: 47 Dabei seit: 18.07.2006
Windows 7 Professional Delphi 7 Enterprise, Turbo Delphi Explorer 2006
|
Selber Fehler trotz Korrektur, gleiche Stelle ...
Aber danke für den Hinweis, die Zuweisung war so natürlich falsch 
|

|
|
Gausi
       

Beiträge: 7461 Erhaltene Danke: 21 Dabei seit: 22.11.2002 Wohnort: Düsseldorf
Win XP, Win 7 D7 PE, RAD Studio 2009 Professional
|
In den Schleifen steckt der Fehler aber auch noch drin. 
_________________ Oel ngati kameie.
|

|
|
Bergmann89
        
Beiträge: 1058 Erhaltene Danke: 2 Dabei seit: 07.03.2006
Win XP Prof Delphi 7 Personal
|
Hey,
also ich kann mir jetz auch nich richtig erklären, warum er den Stack voll packt, aber hast dus schonma mit nem größeren Stack versucht? Vlt ist er ja wirklich einfach voll. Muss ja nich die Folge einer Endlosschleife sein...
MfG Bergmann
_________________ Ich weiß nicht viel lern aber dafür umso schneller^^
|

|
|
Mashalla
       
(Threadstarter)
Beiträge: 47 Dabei seit: 18.07.2006
Windows 7 Professional Delphi 7 Enterprise, Turbo Delphi Explorer 2006
|
Ach klar ... hatte nur 4 Stunden Schlaf und vorher ne Klausur xD
Warum kommt eigentlich keine Fehlermeldung, wenn ich einen Wert an eine Stelle im Array schreiben will und das Array nicht die erforderliche Länge hat?
|

|
|
Gausi
       

Beiträge: 7461 Erhaltene Danke: 21 Dabei seit: 22.11.2002 Wohnort: Düsseldorf
Win XP, Win 7 D7 PE, RAD Studio 2009 Professional
|
Vermutlich weil diese Prüfung in den Optionen deaktiviert ist. Kann man aber anschalten. 
_________________ Oel ngati kameie.
|

|
|
Mashalla
       
(Threadstarter)
Beiträge: 47 Dabei seit: 18.07.2006
Windows 7 Professional Delphi 7 Enterprise, Turbo Delphi Explorer 2006
|
Jo, lag daran. In TDE ist alles standardmäßig deaktiviert wie ich gerade merke ^^ Danke
|

|
|
Mashalla
       
(Threadstarter)
Beiträge: 47 Dabei seit: 18.07.2006
Windows 7 Professional Delphi 7 Enterprise, Turbo Delphi Explorer 2006
|
Habe jetzt übrigens die ganzen nativen Exceptions vom Debugger behandeln lassen, erhalte jetzt aber auch erst zur Laufzeit eine Zugriffsverletzung, wenn ich auf einen Arrayindex außerhalb der Grenze zugreife. Sollte da nicht der Compiler eingreifen?
|

|
|
Kha
        

Beiträge: 2962 Erhaltene Danke: 22 Dabei seit: 12.11.2005 Wohnort: Brackenheim
Win 7 F#, C# (VS2010)
|
Die wenigstens Compiler führen eine komplette Static Code Analysis durch  . In offensichtlichen Fällen wie deinem wäre es vielleicht noch machbar, aber generell ist das weder trivial noch vom Zeitaufwand her bei jedem Kompilieren akzeptabel.
_________________ >λ=
Bis 10.9. im Urlaub
|

|
|
jakobwenzel
        

Beiträge: 1888 Erhaltene Danke: 1 Dabei seit: 21.06.2005 Wohnort: Ingelheim
XP home, ubuntu BDS 2006 Prof
|
Wenn du ein Array fester Länge hast und auf einen konstanten Index zugreifst sollte er schon meckern, aber in diesem Fall wäre das mit mehr Aufwand verbunden.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|

|
|
Mashalla
       
(Threadstarter)
Beiträge: 47 Dabei seit: 18.07.2006
Windows 7 Professional Delphi 7 Enterprise, Turbo Delphi Explorer 2006
|
Jo, verstehe. Ganz oder gar nicht und im Falle vom Turbo Delphi Compiler eben gar nicht 
|

|
|
Horst_H
        
Beiträge: 914 Erhaltene Danke: 1 Dabei seit: 07.09.2005 Wohnort: Münster
WinXp,PuppyLinux Turbo Delphi, FreePascal
|
Hallo,
Wie oft machen Strings als Wertparameter Aerger....
Probiere mal const oder var vor den zu uebergebenden Strings, dann werden diese nicht auf dem Stack erzeugt.
alternativ, aber schlechter, außer man ändert wirklich was an den Strings, in der letzten Zeilen die neu geschaffenen Strings FVoc, FUser loeschen
Das MIN mit drei eingabedaten arbeitet kannte ich noch nicht.
Gruß Horst
|

|
|
Mashalla
       
(Threadstarter)
Beiträge: 47 Dabei seit: 18.07.2006
Windows 7 Professional Delphi 7 Enterprise, Turbo Delphi Explorer 2006
|
Die Min-Funktion ist selbst programmiert, standardmäßig funktioniert die nur mit 2 Parametern und ich arbeite in meinem Fall mit den Parametern weiter, deswegen hatte ich keine konstanten Parameter verwendet 
|

|
|
Horst_H
        
Beiträge: 914 Erhaltene Danke: 1 Dabei seit: 07.09.2005 Wohnort: Münster
WinXp,PuppyLinux Turbo Delphi, FreePascal
|
Hallo,
| Zitat: | | nd ich arbeite in meinem Fall mit den Parametern weiter, deswegen hatte ich keine konstanten Parameter verwendet |
Bezieht sich auf die Strings?
Gruß Horst
Kaaaafffeeeee...
|

|
|
Horst_H
        
Beiträge: 914 Erhaltene Danke: 1 Dabei seit: 07.09.2005 Wohnort: Münster
WinXp,PuppyLinux Turbo Delphi, FreePascal
|
Hallo,
wieso ist jetzt ein beantwortet Haekchen dran?
Aber, weder Delphi noch freepascal, fordern unmäßig Stackspeicher an.
Also war es ein fasch benannter Zugriffsfehler oder der Teil, der den Fehler produziert, liegt woanders.
Gruß Horst
Einloggen, um Attachments anzusehen!
|

|
|
Gausi
       

Beiträge: 7461 Erhaltene Danke: 21 Dabei seit: 22.11.2002 Wohnort: Düsseldorf
Win XP, Win 7 D7 PE, RAD Studio 2009 Professional
|
Nun, es sieht so aus, als wäre die Fehlermeldung "Stackoverflow" in diesem Fall auf ein wildes Überschreiben des Speichers zurückzuführen, was durch die falschen Array-Grenzen verursacht wurde. Ein Schreiben jenseits der Arraygrenzen kann alles mögliche an Fehlern zur Folge haben.
Das war dann hier wohl kein wirklicher Stackoverflow, sah aber so aus. 
_________________ Oel ngati kameie.
|

|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
|
|