Zitat von
Bbommel:
Laut OP tritt das Problem allerdings ja in der anderen if-Bedingung auf, also nicht bei
SetLength(Start, counter1-1);
sondern bei
SetLength(output, StartInt);
Ja das sieht auch "murksisch" aus
Delphi-Quellcode:
Delete(output,1,2); <--- 2 Zeichen löschen
SetLength(output, StartInt); <--- stimmt jetzt StartInt noch, da im String 2 Zeichen fehlen?
Und ist StartInt überhaupt irgendwo initialisiert?
Zitat von
Bbommel:
Wobei natürlich auch das von dir zitierte problematisch ist, aber eigentlich sollte er für den Fall von counter1=0 schon an dieser if-Bedingung scheitern:
Zitat von
quantum:
if Points[Line][counter1]='-' then
Denn Points[Line][0] ist zwar murks, sollte aber eigentlich nicht gleich "-" werden.
Es wird dennoch beim ersten mal auf Points[Line][0] zugegriffen. Was der Code danach tut, möchte ich lieber nicht wissen
for counter1 := 0 to Length(Points[Line])-1 do
sollte mal durch
for counter1 := 1 to Length(Points[Line])-1 do
ersetzt werden.
Meiner Meinung nach gibt es in dem Code eine Vielzahl von potentiellen Grenzüberschreitungen. Der Range-Check sollte mal in den Compiler-Options aktiviert werden, dann kann der Debugger gleich zum Murks springen.