Thema: Delphi Fehlersuche bei Listen

Einzelnen Beitrag anzeigen

foxyteddy

Registriert seit: 25. Sep 2006
4 Beiträge
 
Delphi 7 Enterprise
 
#1

Fehlersuche bei Listen

  Alt 6. Dez 2006, 08:19
Hallo zusammen.

Habe folgendes Problem: Ich habe eine "filmothek" geschrieben, die ihre Daten in einer Textdatei speichert und auch Laden kann. Klappt alles. Nur wenn ich die Sache Ausgeben lassen will, habe ich ein Problem. Die Idee ist, dass ich es Ausgeben lassen und durch klicke auf ein OnClick der nächste Element angezeigt wird (Also der Zeiger ein Element weiter gesetzt wird). Die "showmessage " dienen nur zur überprüfung, ob der Zeiger wirklich weiter geht. Sobald ich nun die Elemente in ein Form ausgeben will (was bei der ersten ausgabe klappt!) kommt folgender Fehler:
Im Projekt HauptprogrammProjekt.exe ist eine exception der klasse EAccessViolation aufgetreten. Meldung:'Zugriffsverletzung bei Adresse 0045BAB3 im modul 'HauptprogrammProjekt.exe'. Lesen von Adresse 00000004'. Prozess wurde angehalten. Mit einzelnen Anweisungen oder Start fortsetzen.

Könnt ihr mir helfen den Fehler zu finden? Denn offenbar funktioniert es ja, den nächsten Datensatz anzuzeigen (über showmessage) aber nicht in das Formular zu geben.

Anbei Quelltext.

KOPF, TEMP sind Global!

Delphi-Quellcode:
PROCEDURE ausgabeListe(L:Listenzeiger);
BEGIN
  BEGIN
    showmessage(l^.genre);
    ausgabeformular.titelaus.Items.add(l^.Titel);
    ausgabeformular.genreaus.Items.add(l^.genre);
    ausgabeformular.jahraus.Items.add(l^.jahr);
    ausgabeformular.regiseuraus.Items.add(l^.Regisseur);
    ausgabeformular.schauspieleraus.Items.add(l^.schauspieler);
    IF (hilf AND (l<>NIL)) THEN
        BEGIN
         l:=l^.Next;
         ausgabeListe(l); f
         hilf:=false;
        END
      ELSE l:=NIL;
  END;
END;
Delphi-Quellcode:
procedure TAusgabeformular.WeiterClick(Sender: TObject);
begin
  titelaus.Clear;
  genreaus.Clear;
  jahraus.clear;
  regiseuraus.clear;
  schauspieleraus.clear;
//WHILE Temp<>NIL DO BEGIN
  hilf:=TRUE;
// temp:=temp^.Next;
 // showmessage(temp^.titel);
  ausgabeliste(temp);
  end;
//end;
end.
Ich hatte auch die Idee es in dem letzten "weiter click" schon weiterzusetzten (Auskommentiert Temp:=temp^.next)

Vielen Dank für eure Hilfe!
  Mit Zitat antworten Zitat