Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variant + varStrArg = was ist das? (https://www.delphipraxis.net/132293-variant-varstrarg-%3D-ist-das.html)

Namenloser 19. Apr 2009 18:02

Re: Variant + varStrArg = was ist das?
 
Ich meine, du könntest den Variant doch einfach "wie einen String" (das ist ja eienr der Vorteile) benutzen. Bei einem Boolean würde dann z.B. "True" oder "False" in der XML-Datei stehen, bei einem Integer die entsprechend in einen Text umgewandelte Zahl usw. Beim Einlesen (bzw. genauergesagt bei der Benutzung des Wertes) wird der Wert dann von Delphi wieder komvertiert. Nur bei Objekten müsste man noch eine Spezialbehandlung einführen, um diese auch noch zu serialisieren, alles andere macht Delphi ja schon selbst.

[Edit]
Also, was ich meine, ist, statt
Delphi-Quellcode:
    varShortInt: Begin
      Node := AddNode(List[i].Name);
      SavePropInfos(Node, List[i]);
      Node.Attributes['variant'] := 'ShortInt';
      Node.Data := IntToStr(TVarData(V).VShortInt);
    End;
geht auch einfach
Delphi-Quellcode:
Node.Data := V;
[/Edit]

Apollonius 19. Apr 2009 18:07

Re: Variant + varStrArg = was ist das?
 
Du musst auf jeden Fall noch den Typen mitspeichern. Sonst kommen nur Strings zurück.

Namenloser 19. Apr 2009 18:10

Re: Variant + varStrArg = was ist das?
 
Zitat:

Zitat von Apollonius
Du musst auf jeden Fall noch den Typen mitspeichern. Sonst kommen nur Strings zurück.

Aber das ist doch egal, weil der interne String ja automatisch bei der Benutzung wieder umgewandelt wird :gruebel:

Apollonius 19. Apr 2009 18:16

Re: Variant + varStrArg = was ist das?
 
Wenn in der XML-Datei nur "1234" steht, ist nicht mehr zu bestimmen, ob das mal ein String oder eine Zahl war.

himitsu 19. Apr 2009 18:23

Re: Variant + varStrArg = was ist das?
 
klar könnte ich "einfacher" umwandeln, aber jetzt kommt noch varArray und varByRef dazu, wo ich eh genauer auf den Typen eingehen muß, also kann ich doch auch gleich alles "selber" zerlegen und umwandeln?

Alter Mann 20. Apr 2009 11:15

Re: Variant + varStrArg = was ist das?
 
Schau mal, so oder so ähnlich sollte es gehen.

Das Beispiel stammt aus einer Wmi-Geschichte:
Delphi-Quellcode:
  function GetArrayContent(FWMIObj: ISWbemObject; PropName: string): string;
  var
    idx: Integer;
    RS : String;
  begin
    RS := '[';
    if (VarIsNull(FWMIObj.Properties_.Item(PropName, 0).Get_Value)) or
       (VarArrayHighBound(FWMIObj.Properties_.Item(PropName, 0).Get_Value, 1) <= 0) then
      RS := RS + ']'
    else
    begin
      for idx := 1 to VarArrayHighBound(FWMIObj.Properties_.Item(PropName, 0).Get_Value, 1) do
        RS := RS + VarToStr(FWMIObj.Properties_.Item(PropName, 0).Get_Value[idx]) + ', ';
    end;
    if Length(RS) > 2 then RS := Copy(RS, 1, Length(RS) - 2) + ']';
    Result := RS;
  end;
Gruß

himitsu 20. Apr 2009 11:27

Re: Variant + varStrArg = was ist das?
 
Der Witz daran ist, das ein Variant auch wiederrum ein Variant oder gar ein Variant-Array enthalten kann ... also diese Dinger sind schon irgendwie krank und sowas von verwurschtelt :shock:

[add]
Ach ja und ich nutze die Unit Variants nicht, sondern nur die Definitionen/Möglichkeiten der Unit System. :stupid:
Ich weiß ja nicht ob der Typ Variant überhaupt verwendet wird, was wohl oftmals garnicht der Fall sein muß/wird, drum wollte ich diese Unit (Variants) garnicht erst einbinden.

ok, hab grad mitbekommen, daß seitdem ich TStream verwende die Units Variants via Classes eingebunden wird :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz