Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Herausfinden, von welchem typ eine Variable ist (https://www.delphipraxis.net/57788-herausfinden-von-welchem-typ-eine-variable-ist.html)

Pfoto 26. Nov 2005 19:07


Herausfinden, von welchem typ eine Variable ist
 
:hi: zusammen,

obwohl ich schon die Suche bemüht habe, finde ich nicht eine Info darüber, wie ich zur Laufzeit herausfinden kann, von welchem Typ eine Variable ist.


Hintergrund:
Ich möchte in meinem Objekt bequem verschiedene Variablen aufnehmen können wie dies mit
Delphi-Quellcode:
ParamByName('Platzhalter').AsString
möglich ist.

Dies alleine ist ja noch nicht so schwierig, wenn man entsprechende Methoden in das Objekt einbaut.

Ich brauche jedoch die Variablen zur Weiterverarbeitung in einer DB.
Dort arbeite ich wiederum mit der Methode
Delphi-Quellcode:
Query.SQL.ParambyName('Platzhalter').AsString
(o.ä.)

Um jetzt gezielt ParamByName mit der richtigen Methode aufrufen zu können, müsste ich wissen, welchen Typs die Variable ist. So eine Funktion müsste es doch geben, oder?


Vielleicht wisst ihr ja auch eine elegantere / bessere Lösung für mein Problem.


Schonmal herzlichen Dank


Gruß
Pfoto

marabu 26. Nov 2005 19:19

Re: Herausfinden, von welchem typ eine Variable ist
 
Hallo Pfoto,

für den Transport von Typinformation wurde der "Typ" Variant erfunden.

Grüße vom marabu

Pfoto 26. Nov 2005 21:13

Re: Herausfinden, von welchem typ eine Variable ist
 
Danke für den Hinweis, marabu

Ich muss ja nur leider bei der ParameterÜbergabe an die DB wissen, um welchen Typ es sich handelt, um entsprechend .AsString / .AsInteger / .AsDateTime etc. aufrufen zu können.


Hier mal grob zur Veranschaulichung:

Delphi-Quellcode:
procedure SetValue(AValue : Variant);
begin
  with Query do
  begin
    SQL.Text:= 'SELECT * FROM tDemotabelle WHERE Value = :Value);

    // Hier müsste so eine Art Typ-Selection stattfinden
    If AValue = IsString then
     SQL.ParamByName('Value').AsString:= AValue;
    If AValue = IsInteger then
     SQL.ParamByName('Value').AsInteger:= AValue;
    If AValue = IsDate then
     SQL.ParamByName('Value').AsDate:= AValue;
  end;
end;
Denn in die Spalten der Tabelle muss ja der Wert als korrekter Typ übergeben werden.
Deshalb scheint es mir, ich müsste erst einmal herausfinden, welchen Typs die Variable ist.

Aber wenn ich das richtig verstanden habe, übergibt der Compiler bei Variant einfach einen Pointer, ohne zu wissen, von welchem Ursprungstyp die Variable war, richtig?

D.h. ich müsste auf andere Weise übergeben, als welchen Typ der Wert in die DB aufgenommen werden soll. Dann mache ich mal bei diesem Gedanken weiter...



Dank und Gruß
Pfoto

marabu 26. Nov 2005 21:43

Re: Herausfinden, von welchem typ eine Variable ist
 
Pfoto, zäumst du das Pferd nicht von hinten auf? Ist es in dem von dir geschilderten Fall nicht sinnvoller zu fragen, welchen Typ das Datenbankfeld hat?

marabu

Pfoto 26. Nov 2005 21:56

Re: Herausfinden, von welchem typ eine Variable ist
 
ja ich werde wohl nochmal neu darüber nachdenken müssen... :gruebel:

Gruß
Pfoto


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.

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