Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit Copy(aclass)... (https://www.delphipraxis.net/136040-problem-mit-copy-aclass.html)

Teekeks 22. Jun 2009 16:26


Problem mit Copy(aclass)...
 
Hallo!
Ich habe ein Problem.
Folgende Situation ist gegeben:
Delphi-Quellcode:
function TDatabaseConnector.CreateDatabase(Name: TDatabaseName): boolean;
var tmp:TDatabase;
begin
  result:=true;
  try
    tmp:=TDatabase.Create(Name);
  except
    result:=false;
    exit;
  end;
  _Database:=Copy(tmp);//hier tritt der Fehler auf...
  result:=SaveDatabase;
end;

// TDatabase:
  TDatabase=class
  private
  public
    constructor Create(Name:TDatabaseName);
    destructor Destroy; override;
    _Tables:TTableArray;
    _Name:TDatabaseName;
    function AddTable(Name:TTableName; Rows:TRowArray):boolean;
  end;
Der Fehler den ich kriege lautet so:
Zitat:

Wrong number of parameters specifed for call to "$fpc_shortstr_copy"
Ich nehme man an er würde denken das ich das String-Copy nehmen will, dem ist aber nicht so.
Ich will das Copy für Classen!

Weis jemand was ich falsch gemacht habe?

gruß Teekeks

mkinzler 22. Jun 2009 16:28

Re: Problem mit Copy(aclass)...
 
Copy() kann nicht auf den Typ TDatabase angewendet werden. Schau dir mal die .Assign()-Methode an

Teekeks 22. Jun 2009 16:31

Re: Problem mit Copy(aclass)...
 
Aber warum nicht? bei allen anderen einfachen Klassen geht es doch auch...
Und, bitte verzei meine begrifsstuzigkeit, was soll ich da sehen? und wo ist die?

gruß Teekeks

Muetze1 22. Jun 2009 16:45

Re: Problem mit Copy(aclass)...
 
Zitat:

Zitat von Teekeks
Aber warum nicht? bei allen anderen einfachen Klassen geht es doch auch...
Und, bitte verzei meine begrifsstuzigkeit, was soll ich da sehen? und wo ist die?

Nein, geht nicht. Du wirst auch bei einfachen Klassen einen Fehler bekommen vom Compiler. Es gibt kein Copy für Klassen.

Teekeks 22. Jun 2009 20:26

Re: Problem mit Copy(aclass)...
 
OOps stimmt!
Das waren ja Dynamische Arrays :)
Und wie Kopiert man sonst Klassen?

mkinzler 22. Jun 2009 20:28

Re: Problem mit Copy(aclass)...
 
Zitat:

Zitat von Teekeks
OOps stimmt!
Das waren ja Dynamische Arrays :)
Und wie Kopiert man sonst Klassen?

http://www.delphipraxis.net/internal...051475#1051475

Teekeks 22. Jun 2009 20:51

Re: Problem mit Copy(aclass)...
 
Ok.
Aber wie wende ich das an?
_Database.Assign gibt es bei mir nicht.
Ich hab hier Lazarus v0.9.26b...

Ich habe auch nichts (für mich) verständliches dazu gefunden.

himitsu 22. Jun 2009 21:28

Re: Problem mit Copy(aclass)...
 
in deinem Fall reicht vermutlich schon
Delphi-Quellcode:
function TDatabaseConnector.CreateDatabase(Name: TDatabaseName): boolean;
var tmp:TDatabase;
begin
  try
    tmp:=TDatabase.Create(Name);
  except
    result:=false;
    exit;
  end;
  _Database:=tmp;
  result:=SaveDatabase;
end;
oder einfach nur, denn tritt im Constructor eine Exception auf, wird der Variable nix zugewiesen :)
Delphi-Quellcode:
function TDatabaseConnector.CreateDatabase(Name: TDatabaseName): boolean;
begin
  try
    _Database := TDatabase.Create(Name);
    result:=SaveDatabase;
  except
    result:=false;
  end;
end;
ansonsten mehr so
Delphi-Quellcode:
tmp := ...;
_Database := TDatabase.Create;
_Databate.Assigned(tmp);
tmp.Free;

Muetze1 23. Jun 2009 06:45

Re: Problem mit Copy(aclass)...
 
@himitsu: try/finally, Assigned()?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 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