Einzelnen Beitrag anzeigen

Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Unrealistischster Fehler aller Zeiten.

  Alt 8. Jan 2005, 11:25
Der Fehler: Listenindex überschreibt das Maximum von (0).

der Fehler passiert hier:

Delphi-Quellcode:
if anhang_list.count <> 0 then begin
    for i:=0 to anhang_list.Count-1 do begin
    IBTAble2.Insert;
    Pic2DB.StoreFileInDB(TBlobField(IBTable2.FieldByName('FILE')),path+'\tmp\'+anhang_list.Strings[i]);
    IBTable2.FieldByName('ID').AsInteger := StrToInt(anhang_id_list.Strings[i]);
    IBTable2.Post;
    end;
    end;
Vor der if-Schleife ist der Stream noch voll, weil ich Ihn testweise in ein Memo geladen habe. In der if-Schleife ist er leer. Ebenfalls mit einem Memo getestet.

An der Pic2DB-Komponente liegt es nicht, weil sie sonst einwandfrei funktioniert und das merkwürdige ist ja, dass ich nun vor der if-schleife einen 2. Stream erstelle und den Inhalt von anhang_id_list_stream dort hineinlade und diesen dann bei Pic2DB angebe. So klappt es merkwürdigerweise. Aber das ist doch unlogisch oder nicht? Ein Stream kann sich doch nicht, ohne Grund, innerhalb einer if-Schleife leeren.

Gruß
Sascha

EDIT:

Ich habe nun auch noch festellen dürfen (komischerweise klappte es die ganze Zeit), dass mein Programm hier abstürzt:

FreeAndNil(anhang_id_list_stream);

Erstellt wurde der Stream ja... d.h. er muss irgendwo vernichtet werden. Aber warum?? Ich habe nirgendswo stehen, dass er den Stream vernichten soll, außer an der einen Stelle, aber da wurde er komischerweise schon vorher vernichtet.
Sascha
  Mit Zitat antworten Zitat