Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi funktion soll TStringList zurückliefern (https://www.delphipraxis.net/36938-funktion-soll-tstringlist-zurueckliefern.html)

Dax 28. Dez 2004 13:42

Re: funktion soll TStringList zurückliefern
 
So macht man das :thumb:

[edit]Ganz verrückte Leute (zB ich) geben keine Typen, sondern Typeninterfaces zurück, dann muss man sich um die freigabe des Speichers nicht mehr kümmern :angel2:

Sanchez 28. Dez 2004 13:43

Re: funktion soll TStringList zurückliefern
 
Ja, so könnte es gehen.
Du musst halt daran denken, die zurückgegebene Stringliste in der aufrufenden Funktion dann freizugeben.
Übrigens musst du in dem Beispiel nicht die Liste durchmarschieren und alle Elemetnte addieren.
Mit TStringliste.Text kommst du an den gesamten Inhalt.

grüße, daniel

Dax 28. Dez 2004 13:45

Re: funktion soll TStringList zurückliefern
 
Und wo wir schon dabei sind, du brauchst deine Funktion gar nicht. Delphi-Referenz durchsuchenTStringList.Delimiter und Delphi-Referenz durchsuchenTStringList.DelimitedText können das für dich tun :zwinker:

idontwantaname 28. Dez 2004 13:49

Re: funktion soll TStringList zurückliefern
 
danke für den tipp, wollte es halt selber machen :P
ne, wusste nur nicht, das es sowas gibt :mrgreen:

Zitat:

Zitat von Dax
Ganz verrückte Leute (zB ich) geben keine Typen, sondern Typeninterfaces zurück, dann muss man sich um die freigabe des Speichers nicht mehr kümmern :angel2:

und wie macht man sowas ??

Dax 28. Dez 2004 14:03

Re: funktion soll TStringList zurückliefern
 
Am besten kuckst du dir ein paar Interface-Tutorials an, an der entsprechenden DP-Sparte gibts sogar eins. ;)

Aber ein kleines Beispiel kann ja nicht Schaden :)
Delphi-Quellcode:
type
  IMyType = interface
    procedure SetText(New: string);
    procedure GetText: string;
    property Text: string read GetText write SetText;
  end;

  TMyType = class(TInterfacedObject, IMyType)
  private
    fText: string;
    // Die beiden Funktionen brauche ich wohl nicht zu vervollständigen ^^
    procedure SetText(New: string);
    procedure GetText: string;
  public
    property Text: string read GetText write SetText;
  end;

function GetTextWith(Text: string): IMyType;
begin
  Result := TMyType.Create;
  Result.Text := Text;
end;
Wenn du jetzt GetTextWith in einer Funktion(z.B. MyRead) aufrufst, wird die in GetTextWith erstellte Instanz von TMyType beim verlassen der Funktion (MyRead) zerstört, weil dort der Gültigkeitsbereich des Interfaces zuende ist.

Ich weiss, das Beispiel ist ein wenig dumm gewählt und die Erklärung nicht vollständig, aber ich will dir ja nicht den Spass verderben, die Tuts zu lesen :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 Uhr.
Seite 2 von 2     12   

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