Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

StringList weiter reichen zur Eigentliche Klasse

  Alt 30. Okt 2007, 18:43
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 = '.M3Uthen 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]) = '#EXTM3Uthen 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;
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat