Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TStrings und Memo dumme Frage! (https://www.delphipraxis.net/125967-tstrings-und-memo-dumme-frage.html)

clock50 15. Dez 2008 20:47


TStrings und Memo dumme Frage!
 
Hallo Experten!

Ich habe hier mal ne für mich nicht unverständliche Sache :

wenn ich in ein 'stl' (TStrings) einen anders kopiere siehe Beispiel dann wird bei jeder Änderung von stl auch die das andere TStrings geänert warum?
Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

var stl : TStrings;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
stl := Memo1.Lines;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
stl.Add(Edit1.text);
end;

end.

mkinzler 15. Dez 2008 20:49

Re: TStrings und Memo dumme Frage!
 
Du hast es ja nicht kopiert, sondern die Referenz(Zeiger) darauf verwiesen

clock50 15. Dez 2008 20:52

Re: TStrings und Memo dumme Frage!
 
Ich habe doch nur stl (TStrings) := Memo1.Lines (TStrings) kopiert? Oder wie sieht kopieren aus?

mkinzler 15. Dez 2008 20:56

Re: TStrings und Memo dumme Frage!
 
Und stl und Memo.Lines sind Referenzen (Zeiger), welche nach der Zuweisung auf daselbe Objekt Zeigen.
Delphi-Quellcode:
stl.Assign( Memo1.Lines);

clock50 15. Dez 2008 20:59

Re: TStrings und Memo dumme Frage!
 
Bleibt die Referenz solange erhalten wie die Anwendung läuft wenn sie von mir nicht geändert wird? Oder was kann die Referenz ändern?

mkinzler 15. Dez 2008 21:02

Re: TStrings und Memo dumme Frage!
 
Eine Referenz ist ein Zeiger(variable). Sie bleibt bestehen, bis du sie auf Nil oder ein anderes Objekt setzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 Uhr.

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