Autor Beitrag
LonghornUser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Mi 26.04.06 18:30 
Hallo,

also irgendwie versteh ich nix mehr.
Ich lese mit einer Laufvariable (z) ein Feld aus, in dem sich an einer bestimmten Stelle ein String befindet. Da lese ich Buchstabe (a) für Buchstabe aus, um bis zum ersten Leerzeichen den String herauszulösen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
s := '';
a := ' ';
z := 0;
if Texte[i]<>'' then begin
  a := Texte[i][z];
  while a <> ' ' do begin
    INC(z);
    a := Texte[i][z]; // <------ hier springt der Debugger hin :(
    s := s + a;
  end;
{...}

Jetzt stürzt das Programm nach dem Start ab und der Debugger springt zur markierten Stelle. Warum das ?

Ciao LHUser
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 26.04.06 19:00 
Fehlermeldung? Ich vermute mal, dass "Z" größer wird als der größtmögliche index irgendeiner liste, denn i bleibt gleich groß. Solange z = 0, kommt keine fehlermeldung, wird z um eins erhöht, so tritt die exception auf :roll:
starsurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 334

Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
BeitragVerfasst: Mi 26.04.06 19:07 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
while a <> ' ' do begin  
    INC(z);  
    a := Texte[i][z]; // <------ hier springt der Debugger hin :(  
    s := s + a;  
  end;


DAS wird ja so lange ausgeführt wie a kein leerzeichen ist....

hast du also ein string der am ENDE kein LEERZEICHEN enthält passiert das:
Bsp:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
string: doof
1: a:=d s:=d z=1 //a ist kein leerzeichen also weiter
2: a:=o s:=do z=2 //a ist kein leerzeichen also weiter
3: a:=o s:=doo z=3 //a ist kein leerzeichen also weiter
4: a:=f s:=doof z=4 //ABER das letzte zeichen war ja ein "f" und kein "_"
5: deswegen wird z wieder um eins erhöht und übersteigt damit die länge des string...


denk ich ma ^^ beim mir hat er zwar kein exception gemacht aber dafür mein string mit #0 überschreiben warum auch immer *g*

_________________
GEIZ IST GEIL! - Ihr Sozialamt
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Mi 26.04.06 19:43 
Du hattest Recht. z war zu groß. Dummer Fehler :) Danke für die Hilfe