AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

EAccessViolation Fehler

Ein Thema von Tempest08 · begonnen am 22. Jun 2008 · letzter Beitrag vom 22. Jun 2008
Antwort Antwort
Seite 2 von 2     12   
Tempest08

Registriert seit: 20. Jun 2008
12 Beiträge
 
#11

Re: EAccessViolation Fehler

  Alt 22. Jun 2008, 20:41
Beim Debuggen stoppt er an folgender Stelle:

Delphi-Quellcode:
procedure TForm1.Ausgeben;
var yPos: integer;
begin
  for yPos:= 1 to 30 do begin
    StringGrid1.Cells[1, yPos]:= '';
    StringGrid1.Cells[2, yPos]:= '';
  end;
  sportler:= schnellster;
  ypos:= 1;
  while sportler <> nil do begin
    StringGrid1.Cells[1, yPos]:= sportler^.name;
    StringGrid1.Cells[2, yPos]:= FloatToStr(sportler^.zeit); //<--- Diese Zeile sei ein EAccessViolation
    sportler:= sportler^.next;
    ypos:= ypos+1;
  end;
end;
Ist mir allerding schleierhaft, dass er die while schleife einmal komplett durchläuft und beim zweiten Mal an der benannten Stelle abbricht...
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: EAccessViolation Fehler

  Alt 22. Jun 2008, 20:47
StringGrid1.Cells[2, yPos] existiert diese Zelle überhaupt?
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Tempest08

Registriert seit: 20. Jun 2008
12 Beiträge
 
#13

Re: EAccessViolation Fehler

  Alt 22. Jun 2008, 20:54
Ja sie existiert, aber ich habe gerade eine Lösung gefunden. Aus irgendeinem Grund hat Delphi die while schleife zwei mal durchlaufen obwohl nur ein Element existierte.
Habe es jetzt wie folgt behoben, wenngleich ein wenig umständlich.

Delphi-Quellcode:
procedure TForm1.Ausgeben;
var yPos, i: integer;
begin
  for yPos:= 1 to 30 do begin
    StringGrid1.Cells[1, yPos]:= '';
    StringGrid1.Cells[2, yPos]:= '';
  end;
  sportler:= schnellster;
  ypos:= 1;
  for i:= 1 to anzahl do begin // <-- Habe nun nach jedem Einfügen bzw. Löschen die anzahl Variable die Sportler zählen lassen
    StringGrid1.Cells[1, yPos]:= sportler^.name;
    StringGrid1.Cells[2, yPos]:= FloatToStr(sportler^.zeit);
    sportler:= sportler^.next;
    ypos:= ypos+1;
  end;
end;
So funktioniert es
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#14

Re: EAccessViolation Fehler

  Alt 22. Jun 2008, 21:17
Hi,

Zitat:
Ist mir allerding schleierhaft, dass er die while schleife einmal komplett durchläuft und beim zweiten Mal an der benannten Stelle abbricht...
Ich denke mal, an der Stelle
sportler:= sportler^.next; ist das Feld "next" nicht NIL, weshalb die while-Bedingung
(sportler<>nil) weiterhin erfüllt ist...

Schau dir mal deinen Source zum Einfügen eines neuen
Sportlers an, ob dort das Feld "next" auf NIL initialisiert wird.
Gruß
Norman
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz