AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variant + varStrArg = was ist das?

Ein Thema von himitsu · begonnen am 9. Apr 2009 · letzter Beitrag vom 20. Apr 2009
Antwort Antwort
Seite 2 von 2     12   
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Variant + varStrArg = was ist das?

  Alt 19. Apr 2009, 18:02
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
Node.Data := V; [/Edit]
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Variant + varStrArg = was ist das?

  Alt 19. Apr 2009, 18:07
Du musst auf jeden Fall noch den Typen mitspeichern. Sonst kommen nur Strings zurück.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Variant + varStrArg = was ist das?

  Alt 19. Apr 2009, 18:10
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
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Variant + varStrArg = was ist das?

  Alt 19. Apr 2009, 18:16
Wenn in der XML-Datei nur "1234" steht, ist nicht mehr zu bestimmen, ob das mal ein String oder eine Zahl war.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#15

Re: Variant + varStrArg = was ist das?

  Alt 19. Apr 2009, 18:23
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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

Re: Variant + varStrArg = was ist das?

  Alt 20. Apr 2009, 11:15
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ß
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#17

Re: Variant + varStrArg = was ist das?

  Alt 20. Apr 2009, 11:27
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

[add]
Ach ja und ich nutze die Unit Variants nicht, sondern nur die Definitionen/Möglichkeiten der Unit System.
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 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