Hallo zusammen,
Ein neuer Tag eine neue Frage

, und zwar: ich möchte für jedes einzelnes Element meines Arrays einen Pointer bereitstellen um eventuell den Speicherplatz zusparen.
Es funktioniert soweit, ich habe aber trotzdem das Gefühl, dass die einzelne Elemente nicht die Speicheradresse des Pointers bekommen, sondern nur einen Wert des Pointer.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TAdress = record Name:string[10]; end; TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; Button2: TButton; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
var Adress:Array of TAdress; i: integer; Pvar: ^string; Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin New(pvar); pvar^:=Form1.Edit1.Text; i:=i+1; SetLength(Adress,i+1); Adress[i].Name:=pvar^; Form1.Label1.Caption:=Adress[i].Name; Dispose(pvar); end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Adress:=NIL; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.Label2.Caption:=Adress[9].Name; end;
procedure TForm1.FormCreate(Sender: TObject); begin
i:=-1; end;
end. |
Ich denke der richtige Weg wäre es, bereits im Record mit Pointer zuarbeiten. Bitte gibt den richtigen Lösungsvorschlag Problem.
Ich danke für Alle Antworten