Hallo,
gehe ich Recht in der Annahme, dass die Listbox schon im Designer erstellt wird? Dann darfst Du diese nicht nochmals erstellen, das erledigt die
VCL für Dich.
Wenn nicht, dann musst Du Deiner Listbox noch ein Parent übergeben, in dem sie angezeigt werden soll. In Deinem Fall das Fenster selbst:
Listbox1.Parent := Self;
Übrigens läuft Dir nach 256 Einträgen Dein Array über. Du kannst auch einfach eine StringList nehmen, die kann mit Schlüssel-/Wertepaaren umgehen. Dann kannst Du einfach die ganze Datei einlesen und die Kommentarzeilen rausschmeißen. Ich hänge mal ein kommentiertes Beispiel an:
Delphi-Quellcode:
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
// StringListe Methode definieren
Values: TStringList;
procedure LoadFile(const Name: String);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// StringListe anlegen und vorbereiten
Values := TStringList.Create;
Values.NameValueSeparator := ' ';
// Datei laden
LoadFile('C:\Test.txt');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Stringliste zerstören
Values.Free;
end;
procedure TForm1.LoadFile(const Name: String);
var
C: Integer;
begin
// Datei laden
Values.LoadFromFile(Name);
// Kommentare und leere Zeilen ausfiltern
for C := Values.Count - 1 downto 0 do
if (Values[C] = '') or (Pos('#', Trim(Values[C])) = 1) then
Values.Delete(C);
// Listbox füllen
ListBox1.Items.BeginUpdate;
try
ListBox1.Items.Clear;
for C := 0 to Values.Count - 1 do
ListBox1.Items.Add(Values.ValueFromIndex[C]);
finally
ListBox1.Items.EndUpdate;
end;
end;
Gruß
xaromz