Thema: Delphi Kopie einer Instanz

Einzelnen Beitrag anzeigen

stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#1

Kopie einer Instanz

  Alt 29. Dez 2004, 17:18
Hallo!
Ich habe ein Problem mit einer Instanz einer eigenen Klasse.
Hier die Unit, in der das Problem auftritt...

Delphi-Quellcode:
unit buchungAnlegen;

interface

uses
...

type
  TBuchungAnlegenForm = class(TForm)
...
  end;

var
  BuchungAnlegenForm: TBuchungAnlegenForm;

implementation

{$R *.dfm}


procedure TBuchungAnlegenForm.KndEinfBtnClick(Sender: TObject);
begin
  if KundeAngebenForm.ShowModal = mrOK then
  begin
    edName.Text := KundeAngebenForm.neuerKunde.name;
    edVName.Text := KundeAngebenForm.neuerKunde.vorname;
    edStr.Text := KundeAngebenForm.neuerKunde.strasse;
    edHnr.Text := KundeAngebenForm.neuerKunde.hausnummer;
    edPlz.Text := KundeAngebenForm.neuerKunde.plz;
    edOrt.Text := KundeAngebenForm.neuerKunde.ort;
    [b]aktKunde := KundeAngebenForm.neuerKunde;
    KundeAngebenForm.neuerKunde.Free;[/b]
    BuchAufnBtn.Enabled := True;
  end;
end;

procedure TBuchungAnlegenForm.BuchAufnBtnClick(Sender: TObject);
var umb: Shortint;
    rab: Single;
    s: ShortString;
begin
  s := cbRabatt.Items[cbRabatt.ItemIndex];
  Delete(s, Length(s), 1); //Prozentzeichen entfernen
  rab := StrToFloat(s) / 100; //in Gleitkomma umrechnen und durch 100 teilen
  umb := cbBuch.ItemIndex;

  with BuchungTab do
  begin
    Active := True;
    Append;
    FieldByName('Kunde').AsInteger := [b]aktKunde.id[/b];
    FieldByName('Zimmer').AsString := aktZimmer;
    FieldByName('Anreise').AsDateTime := aktDatum;
    FieldByName('Abreise').AsDateTime := dtpAbreise.Date;
    FieldByName('Rabatt').AsFloat := rab;
    FieldByName('Umbuch').AsInteger := umb;
    Post;
    Active := False;
  end;

  FBuchung := TBuchung.Create(aktZimmer, aktKunde, aktDatum, dtpAbreise.Date, umb, rab);

...

end;

end.
In der ersten Procedure werden Edits mit den Werten der Instanz gefüllt. Das klappt super.
Dann wird die Instanz in eine Formular-eigene Instanz kopiert und die Instanz des fremden Formulars gelöscht.

Wenn ich dann jedoch in der zweiten Prozedure auf diese neue Instanz zugriefen möchte, sind die Daten weg!

Hängt das damit zusammen, dass ich mit xInst := gForm.yInst keine richtige Kopie erstelle? Ich habe das irgend wo mal gelesen, dass man nur die Adresse kopiert, und wenn man das dann free-setzt, ist es weg.

Wie macht man das dann??? Ist wahrscheinlich eine dumme Frage, aber ich bin halt dummer Anfänger! Und gefunden hab ich dazu irgedwie nix!
  Mit Zitat antworten Zitat