![]() |
Re: Exeption - Woher?
Was steht den in ID?
|
Re: Exeption - Woher?
Der Fehler kann ja nur in Buchliste[x] sein. Was für einen Wert hat x, wenn der Fehlerauftritt?
|
Re: Exeption - Woher?
Liste der Anhänge anzeigen (Anzahl: 1)
hier mal 'n kleines testprogramm:
Delphi-Quellcode:
Edit://Code umformatiert, da die codedarststellung in der DP recht eigensinnig ist und macht was sie will ... hoffe so ist es besser lesbar
UNIT Unit1;
INTERFACE USES Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, csv; TYPE TForm1 = CLASS(TForm) sg: TStringGrid; PROCEDURE FormCreate(Sender: TObject); PROCEDURE FormDestroy(Sender: TObject); private { Private-Deklarationen } sl: TStringList; public { Public-Deklarationen } END; VAR Form1: TForm1; IMPLEMENTATION {$R *.dfm} PROCEDURE TForm1.FormCreate(Sender: TObject); VAR csv: tCSV; i: integer; j: integer; BEGIN sl := TStringList.Create; sl.LoadFromFile('Buecher.txt'); csv := tCSV.Create; TRY sg.ColCount := 8; sg.RowCount := sl.Count + 1; FOR i := 0 TO sl.Count - 1 DO BEGIN csv.Analyze(sl.Strings[i]); sg.Cells[0, i + 1] := IntToStr(i + 1); FOR j := 0 TO csv.Count - 1 DO sg.Cells[j + 1, i + 1] := csv.Columns[j]; END; FINALLY csv.Free; END; END; PROCEDURE TForm1.FormDestroy(Sender: TObject); BEGIN sl.Free; END; END. Edit2: Kommentar von vorhin noch mal hinzugefügt, da der Editor diese vorloren hat...: Wenn Du dir die zeilen ansiehst, sollte dir etwas bei auffallen... |
Re: Exeption - Woher?
Warum muss die StringList global sein?
|
Re: Exeption - Woher?
muss nicht, nur schnell reingehackt...
so, besser?
Delphi-Quellcode:
UNIT Unit1;
INTERFACE USES Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, csv; TYPE TForm1 = CLASS(TForm) sg: TStringGrid; PROCEDURE FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } END; VAR Form1: TForm1; IMPLEMENTATION {$R *.dfm} PROCEDURE TForm1.FormCreate(Sender: TObject); VAR csv: tCSV; i: integer; j: integer; sl: TStringList; BEGIN sl := TStringList.Create; TRY sl.LoadFromFile('Buecher.txt'); csv := tCSV.Create; TRY sg.ColCount := 8; sg.RowCount := sl.Count + 1; FOR i := 0 TO sl.Count - 1 DO BEGIN csv.Analyze(sl.Strings[i]); sg.Cells[0, i + 1] := IntToStr(i + 1); FOR j := 0 TO csv.Count - 1 DO sg.Cells[j + 1, i + 1] := csv.Columns[j]; END; FINALLY csv.Free; END; FINALLY sl.Free; END; END; END. |
Re: Exeption - Woher?
Wenn du schon fragst: Warum zwei Try-Finally-Blöcke?
Aber was ich viel spannender finde: wo kommt die csv-Unit her? Bei Delphi7 hab ich die irgendwie nicht. Oder bin ich blind? |
Re: Exeption - Woher?
die zwei try finally kommen daher, weil bei jeden create etwas schiefgehen kann und da das objekt noch nicht initialisiert wäre... ein abprüfen auf NIL scheidet aus, da die objekte auf den stack angelegt sind und somit vor dem initialisieren irgendeinen wert aufweisen. deswegen der verschachtelte try finally...
die CSV unit ist selbst gebastelt, hatte keine lust die stringzerlegung mit der hand nachzuvollziehen, obgleich fortuneNext im ersten post etwas entsprechendes hatte. alzheimer hatte auch mal eine CSV unit in der opensource sparte gepostet... aber die stringzerlegung war ja hier auch nicht das problem... deswegen erlaubte ich mir die erleichterung ..., ausserrdem will ich ihm ja auch nicht die ganze arbeit abnehmen ... ;-) schöne grüsse und noch 'n schönen abend GG |
Re: Exeption - Woher?
Zitat:
|
Re: Exeption - Woher?
Zitat:
Ein Hinweis wäre da das Mindeste gewesen. |
Re: Exeption - Woher?
Also ich muss sagen, das Beispiel verstehe ich wirklich nicht. Ich sehe zwar die Logik des Codes so einigermaßen ein (auch wenn ich die Unit nicht kenne), aber das hilft mir bei der Suche nach meinem Fehler überhaupt nicht.
x ist wie gesagt 1598... und was ich auch schon schrieb (siehe post 1):
Delphi-Quellcode:
Weiss einer wo das Problem liegt?
type
TBuch = class(TObject) private {} public ID: integer; Thema: string; Autor: string; Titel: string; Ort: string; Erscheinungsjahr: integer; Verlag: string; end; Manchmal wünscht ich, in diesem Fach könnte einem der Lehrer zumindest manchmal weiterhelfen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz