Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringList (https://www.delphipraxis.net/33827-stringlist.html)

blackyhb 13. Nov 2004 11:25


StringList
 
Hallo Leute,

ich versuche vergeblich in einer StringListe die Reihenfolge der
Einträge umzukehren!!! :gruebel:

Mit Move funktioniert das bei mir leider nicht! :wall:

Hat jemand eine fertige Lösung für mich ?

Bin immer noch Anfänger :pale: und würde mich sehr freuen! :dancer2:

MfG

blackyhb

Sharky 13. Nov 2004 11:39

Re: StringList
 
Hai blackyhb,

Du könntest dir Dafür eine Funktion schreiben die dann als Ergebniss eine TStringListe zurückgibt.
Ungetestet:
Delphi-Quellcode:
function DownToUp (const sl : TStringList) : TStringList;
var
  ndx : Integer;
begin
  for ndx := Pred (sl.count) downto 0 do
  begin
    result.Add(sl.Strings[ndx]);
  end;
end;

blackyhb 13. Nov 2004 11:48

Re: StringList
 
Hallo Stephan,

ich möchte keine neue Liste erstellen!!!??? :mrgreen:

blackyhb :angel:

Luckie 13. Nov 2004 11:50

Re: StringList
 
Und was spricht dagegen, sie dann wieder in die ursprüngliche zurück zu kopieren? :gruebel:

Sharky 13. Nov 2004 11:57

Re: StringList
 
Hier mal ein Beispiel. Dafür habe ich die Funktion nur leicht verändert ;-)
Delphi-Quellcode:
function DownToUp (const source : TStringList) : TStringList;
var
  ndx : Integer;
  dest : TStringList;
begin
  dest := TStringList.Create;
  try
    for ndx := Pred (source.count) downto 0 do
    begin
      dest.Add(source.Strings[ndx]);
    end;
    result.Text := dest.text;
  finally
    dest.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  foo : TStringList;
  ndx : Integer;
begin
  foo := TStringList.Create;
  try
    foo.AddStrings(Memo1.Lines);
    foo := DownToUp (foo);
    Memo2.Lines := foo;
  finally
    foo.Free;
  end;
end;

Jens Schumann 13. Nov 2004 12:04

Re: StringList
 
Hallo Sharky,
ich habe mal einen Kommtar in den Source geschrieben
Zitat:

Zitat von Sharky
Hier mal ein Beispiel. Dafür habe ich die Funktion nur leicht verändert ;-)
Delphi-Quellcode:
function DownToUp (const source : TStringList) : TStringList; // sollte TStrings sein
var
  ndx : Integer;
  dest : TStringList;
begin
  dest := TStringList.Create;
  try
    for ndx := Pred (source.count) downto 0 do
    begin
      dest.Add(source.Strings[ndx]);
    end;
    result.Text := dest.text; // <- Geht nicht, da kein Result:=TStringList.Create da ist
  finally
    dest.Free;
  end;
end;


Sharky 13. Nov 2004 12:06

Re: StringList
 
Hai Jens,

bei mir geht es so ohne Probleme ;-)

Jens Schumann 13. Nov 2004 12:08

Re: StringList
 
Zitat:

Zitat von Sharky
Hai Jens,

bei mir geht es so ohne Probleme ;-)

Glaube ich nicht.
Result soll doch auf ein Objekt vom Type TStringList zeigen.
Wie soll das gehen, wenn Du das Objekt nicht über Create
erzeugst???

Sharky 13. Nov 2004 12:12

Re: StringList
 
Zitat:

Zitat von Jens Schumann
..Glaube ich nicht....

Dann sei so gut und teste es.

Jens Schumann 13. Nov 2004 12:14

Re: StringList
 
Zitat:

Zitat von Sharky
Zitat:

Zitat von Jens Schumann
..Glaube ich nicht....

Dann sei so gut und teste es.

Mit glaube ich nicht meinte ich, dass ich nicht glaube das es bei Dir läuft.
Ich habe es getestet bevor ich meinen ersten Kommentar geschrieben habe.
Bei mir läuft es nicht.

alcaeus 13. Nov 2004 12:15

Re: StringList
 
Hi Jens,

bei mir funktioniert der Source auch ohne Probleme, und ich habe schon mehrmals ein Objekt in einer Funktion zurückgegeben.

Greetz
alcaeus

Jens Schumann 13. Nov 2004 12:18

Re: StringList
 
Zitat:

Zitat von alcaeus
Hi Jens,

bei mir funktioniert der Source auch ohne Probleme, und ich habe schon mehrmals ein Objekt in einer Funktion zurückgegeben.

Greetz
alcaeus

Sehr sonderbar. Evt liegt es daran, dass ich es mit D5 getestet habe. Werde mal D7 ausprobieren

Jens Schumann 13. Nov 2004 12:26

Re: StringList
 
Hallo,
auch mit D7 funktioniert es nicht.

Es kann auch nicht funktionieren.
Bitte sage mir doch mal auf wen oder was Result hier zeigt.
Delphi-Quellcode:
result.Text := dest.text;
Result ist doch noch gar nicht initialisiert.
Das ist doch wie bei jeder anderen Funktion / Methode auch.
Solange ich Result nicht innerhalb der Funktion initialisiere
liefert die Funktion ein unbestimmtes Ergebnis zurück.

Nicodius 13. Nov 2004 12:27

Re: StringList
 
bei d6 geht es ;)

Jens Schumann 13. Nov 2004 12:43

Re: StringList
 
Zitat:

Zitat von Nicodius
bei d6 geht es ;)

Nur weil es geht heißt das noch lange nicht das es auch funktioniert :wink:
Wenn ich mit recht erinnere werden Funktiontionsergebnisse über das AX Register zurückgegeben.
Ich diesem Fall würde das bedeuten das über das AX-Register eine Objektzeiger zurückgegeben
werden muss. Einen Objektzeiger erhält man aber nur, wenn man das Objekt über den constructor
auch erzeugt. Das geschieht in Sharky's Beispiel nicht. Beim Eintritt in die Funktion befindet
ein mehr oder weiniger zufälliger Wert im AX-Register.

Sharky 13. Nov 2004 12:44

Re: StringList
 
Zitat:

Zitat von Jens Schumann
Hallo,
auch mit D7 funktioniert es nicht....

Hai Jens,

ich habe den Code inkl. der Exe mal hier zum downloaden abgelegt (208 kB).

Jens Schumann 13. Nov 2004 12:53

Re: StringList
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Sharky,
dann probiere mal dieses Beispiel:

Nicodius 13. Nov 2004 13:01

Re: StringList
 
geht ohne probleme(bis auf nen error am ende aber es machts schon ohne compilermeldung ;) ) :roll:

Jens Schumann 13. Nov 2004 13:03

Re: StringList
 
Zitat:

Zitat von Nicodius
geht ohne probleme(bis auf nen error am ende aber es machts schon ohne compilermeldung ;) ) :roll:

Wenn man zweimal auf den Button klickt tritt bei ein Fehler auf. Schutzverletzung und so.

Nicodius 13. Nov 2004 13:05

Re: StringList
 
jo ... das meine ich


stimmt

mit

Delphi-Quellcode:
result := TStringlist.Create;
gehts ohne probleme

Sprint 13. Nov 2004 13:11

Re: StringList
 
Zitat:

Zitat von blackyhb
ich versuche vergeblich in einer StringListe die Reihenfolge der
Einträge umzukehren

Delphi-Quellcode:
procedure Reverse(const AStringList: TStringList);
var
  I: Integer;
begin

  I := 0;
  while I < (AStringList.Count div 2) do
  begin
    AStringList.Exchange(I, AStringList.Count - I - 1);
    Inc(I);
  end;

end;

Nicodius 13. Nov 2004 13:13

Re: StringList
 
das geht ohne probleme


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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