AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Herausfinden, von welchem typ eine Variable ist
Thema durchsuchen
Ansicht
Themen-Optionen

Herausfinden, von welchem typ eine Variable ist

Ein Thema von Pfoto · begonnen am 26. Nov 2005 · letzter Beitrag vom 26. Nov 2005
Antwort Antwort
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Herausfinden, von welchem typ eine Variable ist

  Alt 26. Nov 2005, 19:07
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 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 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
Jürgen Höfs
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Herausfinden, von welchem typ eine Variable ist

  Alt 26. Nov 2005, 19:19
Hallo Pfoto,

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

Grüße vom marabu
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Herausfinden, von welchem typ eine Variable ist

  Alt 26. Nov 2005, 21:13
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
Jürgen Höfs
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Herausfinden, von welchem typ eine Variable ist

  Alt 26. Nov 2005, 21:43
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
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Herausfinden, von welchem typ eine Variable ist

  Alt 26. Nov 2005, 21:56
ja ich werde wohl nochmal neu darüber nachdenken müssen...

Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:16 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