Einzelnen Beitrag anzeigen

bensh

Registriert seit: 3. Dez 2006
6 Beiträge
 
Delphi 7 Professional
 
#1

Element '' hat kein übergeordnetes Fenster

  Alt 3. Dez 2006, 11:57
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]