Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi variants in klasse zuweisen (https://www.delphipraxis.net/46700-variants-klasse-zuweisen.html)

thomasch 30. Mai 2005 08:33


variants in klasse zuweisen
 
Hallo,
ich möchte verschiedene Werte als OLE Variants verwenden.
Momtentan funktioniert das in etwa so:
Delphi-Quellcode:

Procedure setz_wert_a;
var
myTyp: Variant;
myData:Variant;
begin

myTyp:=VarArrayCreate([0,3],varSmallint);
myData:=VarArrayCreate([0,3],varVariant);
myTyp[0]:=1
myData[0]:='ein_text';

[...]
wert_a:=meineolefunktion(myTyp,myData);
[...]

end;

Procedure setz_wert_b;
var
myTyp: Variant;
myData:Variant;
begin

myTyp:=VarArrayCreate([0,5],varSmallint);
myData:=VarArrayCreate([0,5],varVariant);
myTyp[0]:=1
myData[0]:='ein_anderer_text';
[...]
wert_b:=meineolefunktion(myTyp,myData);
[...]

end;
Jetzt wollte ich die Zuweisungen von myTyp/myData in eine eigene Klasse auslagern und versuchte folgendes:
Delphi-Quellcode:
unit uSetzTyp;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Comobj, AutoCAD_TLB, StdCtrls, oleCtnrs ;


Type
 cSetzTyp=class
 Public
 myTyp:variant;
 procedure setzTyp1;
 end;

implementation

procedure cSetzTyp.setzTyp1;
begin
myTyp:=VarArrayCreate([0,3],varSmallint);
[...]
end;
end.
und im Hauptprogramm:
Delphi-Quellcode:
cSetzTyp.setzTyp1;
um dann später mit wert_b:=meineolefunktion(cSetzTyp.myTyp,cSetzData. myData); arbeiten zu können.

Leider bekomme ich in dem Moment, wo ich in cSetzTyp das Array zuweisen möchte eine Fehlermeldung "ungültiger Variant-typ";

Jetzt meine Fragen:
1. Was mach ich falsch?
2. Geht das ggf. eleganter?

Danke schonmal

Thomasch

marabu 30. Mai 2005 09:54

Re: variants in klasse zuweisen
 
Hallo thomasch,

wenn du beim Aufruf so vorgehst, dann dürfte es keine Probleme geben:

Delphi-Quellcode:
var
  st: cSetzTyp;
begin
  st := cSetzTyp.Create;
  st.SetTyp1;
  st.Free;
end;
Grüße vom marabu

PS: Für Delphi ungewöhnliche Namenskonvention...


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