Hallo,
ich möchte gerne wie im Titel schon beschrieben steht eine TStringList weiter reichen.
Am Anfang wird eine Variable aus der Haupt Klasse(TPlayListManger) mit einer ListBox1.Items
verbunden.
Jetzt Lade ich eine Datei und sie wird auch in der ListBox angezeigt.
Nun Möchte ich von einem Button Klick den Inhalt der Variable aus Klasse(TPlayListManger) anzeigen lassen.
Aber sie ist leer warum ?
Hier mal mein Soruce Code. Ich sehe einfach keinen Fehler. Oder verstehe ich das mit den Pointern falsch ?
Delphi-Quellcode:
TPlaylistenManger = class
fOnAddPlayListe: TOnAddPlayliste;
fOnGetPlayListeItem:TOnGetPlaylisteItem;
private
procedure InitPlaylist(const aFileName:String; var aPlayliste:TPlaylistBase);
protected
public
_ext:string;
FileName:String;
PlayListItems:TStrings;
OhneExt:Boolean;
Playliste:TPlaylistBase;
constructor Create;
destructor Destroy;
....
procedure TPlaylistenManger.InitPlaylist(const aFileName: String;
var aPlayliste: TPlaylistBase);
var
ext:String;
begin
ext:=UpperCase(ExtractFileExt(aFileName));
if ext = '.M3U' then aPlayliste:=TPlayListM3U.Create;
// if ext = 'PLS' then aPlayliste:=TPlayList.Create;
end;
// Hier lade ich eine M3U Datei
procedure TPlaylistenManger.LoadFromFile(const aFileName: String = '');
var
i:integer;
begin
InitPlaylist(ExtractFileName(aFileName),Playliste);
Playliste.OhneExt:=OhneExt;
Playliste.PlayListItems:=PlayListItems;
Playliste.LoadFromFile(aFileName);
// PlayListItems.Assign(Playliste.PlayListItems);
_ext:=Playliste.ext;
end;
procedure TPlayListM3U.LoadFromFile(const aFileName: String);
var
tmp:TStrings;
i,m:Integer;
str:String;
Item:TInfo;
begin
tmp:=TStringList.Create;
with tmp do begin
LoadFromFile(aFileName); m:=0;
if UpperCase(Strings[0]) = '#EXTM3U' then begin
m:=1;
ext:='#EXTM3U';
end
else
ext:='';
i:=m;
while i <= Count-1 do begin
str:=strings[i]; Item:=TInfo.Create;
if (str <> '') and (str[1] = '#') then begin
Item.Kometar:=str;
Item.FileName:=strings[i+1];
if OhneExt then
PlayListItems.AddObject(SplitStr(ExtractFileName(Item.FileName),'.'),Item)
else
PlayListItems.AddObject(ExtractFileName(Item.FileName),Item);
inc(i,2);
end
else begin
if (str <> '') and (str[1] <> '#') then begin
Item.Kometar:='';
Item.FileName:=strings[i];
if OhneExt then
PlayListItems.AddObject(SplitStr(ExtractFileName(Item.FileName),'.'),Item)
else
PlayListItems.AddObject(ExtractFileName(Item.FileName),Item);
inc(i);
end;
end;
end; // for i:=0
end; // tmp
tmp.free;
end;
Ich hoffe da steigt einer von euch durch. Im Prinzip ist das ein ganz einfacher Weg. Aber irgendwo in diesen Methoden muss ein Fehler sein.
... Vielen Dank schonmal für eure Hilfe ....
Edit00: In dieser Version, werden alle Daten angezeigt. Nur wenn ich in einem Button von From1 jetzt die alle Items anzeigen möchte, steht in der StringList:
PlayListeManger.PlayListItems.Text
nix drin.
obwohl PlayListeManger Global Definiert ist.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
PlayListeManger:=TPlaylistenManger.Create;
PlayListeManger.PlayListItems:=ListBox1.Items;
PlayListeManger.LoadFromFile('/media/hda7/Daten/music/entspannung.m3u');
// :=;
end;