Moin Leute.
Ich bin gerade dabei mir ein wenig Delphi beizubringen. Stolpere aber über einen relative kleinen Stein Namens InvalidOperation
Exception mit der o.g. Meldung.
Mein Plan (Abstract):
Eine Textdatei auslesen und gültige Einträge in einer ListBox darstellen.
Mein Code:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, StrUtils, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
filename :
String;
entries :
Array[Byte, 1..2]
of String;
implementation
{$R *.dfm}
// Hilfsfunnktion
procedure Split (
const Delimiter: Char;
Input:
string;
const Strings: TStrings) ;
begin
Assert(Assigned(Strings)) ;
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := Input;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
line :
String;
handle : TextFile;
i : Integer;
A : TStringList;
begin
// assign components
ListBox1 := TListBox.Create(self);
filename := '
Road/to/File';
AssignFile(
handle, filename);
Reset(
handle);
i := 0;
while not Eof(
handle)
do
begin
ReadLn(
handle, line);
if (AnsiStartsStr('
#', line) <> true)
AND (Length(line) > 0)
then
begin
// ab hier haben wir gueltige eintraege
// temporaerer Container instanziieren
A := TStringList.Create();
try
Split('
', line, A);
entries[i,1] := a[0];
entries[i,2] := a[1];
ListBox1.Items.Add(entries[i,2]);
i:=i+1;
finally
// Container lösen
A.Free;
end;
// try
end;
// if
end;
// loop
end;
// procedure
end.
Die Meldung besagt ja dass das Befüllen der Listbox illegal ist.
Der Debugger sagt definitiv dass es hier passiert
ListBox1.Items.Add(entries[i,2]);
Seht ihr einen Fehler?!
Vielen Dank im Voraus!
Cheers!
[edit=SirThornberry]Titel des Beitrags geändert - Mfg, SirThornberry[/edit]