![]() |
NewStr ist veraltet
Hallo liebe Delphi-Gemeinde,
ich hoffe, ihr könnt mir mit Eurem Wissen wieder helfen, denn ist stehe derzeit etwas auf dem Schlauch. Ich habe einen alten Code gefunden und versuche den in Delphi 2009 zu kompilieren. Ich erhalte den Hinweis NewStr() ist veraltet. Ich könnte es jetzt so belassen, möchte doch aber gern die Hinweise nicht nur ignorieren. Ich habe auch einige Beiträge hier im Forum gelesen, sowie die Erklärung unter ![]() Ich bekomme es jedoch nicht hin, vielleicht kann mir jemand behilflich sein Eine Zeichenkette wird einem ListBox-Eintrag hinzugefügt.
Delphi-Quellcode:
Hiermit greife ich bisher auf die hinterlegte Zeichenkette zu.
ListBox.Items.AddObject(myOutputStr, TObject(LongInt(NewStr(myDataString))) );
Delphi-Quellcode:
Ich bedanke mich in Voraus für jedweden Hinweis/Lösung.
PString(ListBox.Items.Objects[i])^
Danke. Amigage |
Re: NewStr ist veraltet
Sollte mit StrAlloc und StrDispose ersetzt werden können.
|
Re: NewStr ist veraltet
Erst einmal danke für Deine Antwort. Aber in der Hilfe steht:
Zitat:
|
Re: NewStr ist veraltet
Ein einfacher und sogar OOP-gerechter Weg wäre:
Delphi-Quellcode:
type
TStringObject = class FStr: String; constructor Create(const Str: String); end; ListBox.Items.AddObject(myOutputStr, TStringObject.Create(myDataString)); |
Re: NewStr ist veraltet
Das sieht schon einmal gut aus :)
Aber wie greife ich dann auf das Objekt wieder, damit ich abhängig vom Listeneintrag meine Zeichenkette zurück erhalte? Wäre schön, wenn Du mir da einen Denkanstoß gibst. Danke. |
Re: NewStr ist veraltet
Delphi-Quellcode:
ShowMessage((ListBox.Items.Objects[ListBox.ItemIndex] as TStringObject).StringProperty);
|
Re: NewStr ist veraltet
Delphi-Quellcode:
Den Zugriff vielleicht noch über einen Property lösen und schon sieht es schön aus.
TStringObject(ListBox.Items.Objects[i]).FStr
und das Freigeben z.B. so
Delphi-Quellcode:
TStringObject(ListBox1.Items.Objects[i]).Free;
ListBox1.Items.Delete(i); |
Re: NewStr ist veraltet
Hallo himitsu,
besten Dank für den Hinweis. Jetzt klappt es auch ohne NewStr(). :-D |
Re: NewStr ist veraltet
Wenn es nur um einen einfachen String geht, dann kann man seit mindestens Delphi 2009
(weiß nicht genau wann .ToString eingeführt wurde) auch kommlett ohne Typkonterterungen auskommen. :angel:
Delphi-Quellcode:
type
TStringObject = class FStr: String; constructor Create(const Str: string); function ToString: string; override; end; function TStringObject.ToString: string; begin Result := FStr; end; // erstellen ListBox.Items.AddObject(myOutputStr, TStringObject.Create(myDataString)); // auslesen ListBox.Items.Objects[i].ToString // freigeben ListBox1.Items.Objects[i].Free; ListBox1.Items.Delete(i); |
Re: NewStr ist veraltet
Zum Verständnis:
Könnte es sein, daß ich mit NewStr schlicht eine globale AnsiString-Variable erstelle? Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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 by Thomas Breitkreuz