Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TstringList übergabe verkürzen (https://www.delphipraxis.net/89578-tstringlist-uebergabe-verkuerzen.html)

EWeiss 2. Apr 2007 19:18


TstringList übergabe verkürzen
 
Ich möchte aus der Playliste 13 Titel na meine DLL übergeben
Bei der ersten übergabe gibt es kein Problem
Bei der zweiten muss ich die TStringList löschen bis auf den Clear ist in der Funktion ansonsten alles gleich.

Nun möchte ich wissen ob man diese verkürzen kann ohne alles doppelt zu schreiben.

Delphi-Quellcode:
procedure BASS_WINAMPVIS_SetPlaylistEntries(PlPos : integer; PlEntry : integer;
                                             Title : string;
                                             changed : boolean); stdCall;
Var
  IntI : integer;

begin
   try
     if not changed then
     begin
       if PlaylistEntries = nil then
         PlaylistEntries := TStringList.Create;

         PlaylistEntries.CommaText := Title;
         if (PlPos + PlEntry) > 13 then
         begin
           PlaylistEntries.Free;
           exit;
         end;

       for IntI := PlPos to PlaylistEntries.Count do
         PlaylistEntries.Add(PlaylistEntries.Strings[IntI]);

     end else
     begin
       PlaylistEntries.clear; //>>>>>>>>> einzigste unterschied!
       if PlaylistEntries = nil then
         PlaylistEntries := TStringList.Create;

       PlaylistEntries.CommaText := Title;
         if (PlPos + PlEntry) > 13 then
         begin
           PlaylistEntries.Free;
           exit;
         end;

       for IntI := PlPos to PlaylistEntries.Count do
         PlaylistEntries.Add(PlaylistEntries.Strings[IntI]);

     end;
   except
     PlaylistEntries.Free;
   end;

end;
Noch ne frage wie lang kann Title sein wenn er als string übergeben wird .. 'PlaylistEntries.CommaText'

Gruss Emil

sirius 2. Apr 2007 19:20

Re: TstringList übergabe verkürzen
 
Delphi-Quellcode:
if changed then clear;

//und jetzt der Rest
Und wo liegt das Problem?

EWeiss 2. Apr 2007 19:23

Re: TstringList übergabe verkürzen
 
Zitat:

Zitat von sirius
Delphi-Quellcode:
if changed then clear;

//und jetzt der Rest
Und wo liegt das Problem?

Hmmm nur das clear nutz doch nix oder ?
Die liste muss ja auch wieder aufgefüllt werden.

Wo meinst denn das ich das hinsetzen soll.

EDIT:
Arrrggghh du meinst anstelle von
Delphi-Quellcode:
if not changed then
und wie lang kann Title sein wenn er als string übergeben wird .. 'PlaylistEntries.CommaText'

Gruss Emil

EWeiss 2. Apr 2007 20:08

Re: TstringList übergabe verkürzen
 
PUSH :duck:
Verzeiht mir nochmal.

Delphi-Quellcode:
  for IntI := PlaylistPos to (PlaylistPos + 12) do
    PlaylistEntry := PlaylistEntry + playlist.Items[IntI] + ',';

    BASS_WINAMPVIS_SetPlaylistEntries(PlaylistPos,
                                      PlaylistEntry,
                                      false);
Diese übergabe wird in der DLL mit mehr als 80 einträge ausgewertet.
das kann aber nicht sein. Da nur 13 übergeben werden.

Wo liegt hier der fehler ?

Delphi-Quellcode:
procedure BASS_WINAMPVIS_SetPlaylistEntries(PlPos : integer; Title : string;
                                             changed : boolean); stdCall;
Var
  IntI : integer;

begin
   try
     if PlaylistEntries = nil then
         PlaylistEntries := TStringList.Create;

     if changed then PlaylistEntries.clear;
     begin
         PlaylistEntries.CommaText := Title;
         if PlaylistEntries.Count > 13 then
         begin
           PlaylistEntries.Free;
           exit;
         end;

       for IntI := PlPos to PlaylistEntries.Count do
         PlaylistEntries.Add(PlaylistEntries.Strings[IntI]);

     end;
   except
     PlaylistEntries.Free;
   end;

end;
Thread hat sich erledigt ....

Gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz