AGB  ·  Datenschutz  ·  Impressum  







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

Typ einzelner Array of const-Elemente

Ein Thema von inherited · begonnen am 7. Jan 2007 · letzter Beitrag vom 30. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#1

Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 16:34
Ich möchte dieses Thema an dieser Stelle noch einmal aufgreifen, da sich die Delphi-Hilfe darüber ausschweigt oder ich unfähig bin, ordentlich zu suchen. Auch hat die Forensuche mir hier nicht weitergeholfen.
Wie genau bekomme ich denn den Typ der einzelnen Parameter raus? Ich weiß wie ich einzelne davon typisiere, aber nicht, wie ich herausbekommen kann von was für einem typ es ist.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 17:05
Delphi-Quellcode:
function fstr(z:variant):string;
begin
   if (TVarData(z).VType = varinteger)
    or(TVarData(z).VType = varbyte)
    or(TVarData(z).VType = varword)
    or(TVarData(z).VType = varint64)
      then str(z:0:0,result)
      else str(z,result);
end;
(Ausschnitt aus einer Funktion (die wahrscheinlich in diesem Ausscheitt recht sinnlos geworden ist))

Mit nem array of const dürfte es genauso funktionieren.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 17:16
Leider nicht

So versuche ich es:

Delphi-Quellcode:
procedure Test(a: Array of Const);
var i: Integer;
begin
  for i := 0 to high(a) do
  begin
    if (TVarData(a[i]).VType=varinteger)
     or(TVarData(a[i]).VType = varbyte)
     or(TVarData(a[i]).VType = varword)
     or(TVarData(a[i]).VType = varint64) then
      ShowMessage(IntToStr(a[i]);
  end;
end;
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 17:19
Natürlich geht das nicht, ein array of const ist schließlich kein array of Variant.

Ich denke mal, du kannst nur die Größe der einzelnen Array-Elemente feststellen und auf sie zugreifen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 17:22
Hi,

nee, so nicht, ist ja kein Variant array

aber auf der Borland TI Webseite findet man dies

How to use an array of const

Delphi-Quellcode:
procedure AddStuff( Const A: Array of Const );
Var i: Integer;
Begin
  For i:= Low(A) to High(A) Do
  With A[i] Do
    Case VType of
    vtExtended: Begin
       { add real number, all real formats are converted to
         extended automatically }

      End;
    vtInteger: Begin

       { add integer number, all integer formats are converted
         to LongInt automatically }

      End;
    vtObject: Begin
        If VObject Is DArray Then
          With DArray( VObject ) Do Begin
            { add array of doubles }
          End
        Else If VObject Is IArray Then
          With IArray( VObject ) Do Begin
            { add array of integers }
          End;
      End;
    End; { Case }
End; { AddStuff }
Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 17:22
Zitat von 3_of_8:
Natürlich geht das nicht, ein array of const ist schließlich kein array of Variant.
Nein, wirklich? -.-

€dit: Ich mach es jetzt mit Variants, danke dir
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 17:29
Du nimmst statt TVardata TVarRec.
etwa so:
Delphi-Quellcode:
for i:=0 to high(a) do begin
  if (TVarRec(a[i]).VType = vtinteger)
      then memo1.lines.Add(inttostr(TVarRec(a[i]).VInteger))
 end;
Edit:
Zitat:
Natürlich geht das nicht, ein array of const ist schließlich kein array of Variant.
Aber ein array of TVarRec
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 19:29
Habe dein Edit erst jetzt gesehen, so klappt es auch wunderbar, danke!
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 19:36
Zitat von inherited:
Habe dein Edit erst jetzt gesehen, so klappt es auch wunderbar, danke!
Ja, ich muss immer erstmal gucken, wie das genau war. Der erste Post, war das erste was mir einfiel und als Idee gedacht, in welche Richtung man suchen könnte.

Übrigens:
Manchmal musst du schauen welchen Typ du überhaupt übergibst. Grade bei strings gibt es ja für vtype mehrere Varianten. Dann lass dir einfach mal testweise vtype ausgeben und schau, welchen Typ du übergeben hast.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Typ einzelner Array of const-Elemente

  Alt 7. Jan 2007, 19:49
Ich hab mir vor einiger Weile mal eine Funktion geschrieben, die ein Array of Const "lesbar" macht.
Evtl. hilft dir das

Delphi-Quellcode:
class function TCODDBHelperClass.ArrayToString(Arr: Array of Const): String;
var
  Loop : Integer;
  Value : TVarRec;
begin
  Result := '[';
  for Loop := 1 to Length(Arr) do
  begin
    Value := Arr[Loop - 1];
    case Value.VType of
      vtInteger : Result := Result + IntToStr(Value.VInteger);
      vtBoolean : Result := Result + BoolToStr(Value.VBoolean);
      vtChar : Result := Result + Value.VChar;
      vtExtended : Result := Result + FloatToStr(Value.VExtended^); // '_EXTENDED_';
      vtString : Result := Result + '''' + Value.VString^ + '''';
      vtPointer : Result := Result + Format('%p', [Value.VPointer]);
      vtPChar : Result := Result + '''' + Value.VPChar + '''';
      vtObject : Result := Result + '_OBJECT_';
      vtAnsiString : Result := Result + '''' + String(Value.VAnsiString) + '''';
      vtCurrency : Result := Result + CurrToStr(Value.VCurrency^); //'_CURRENCY_';
      vtVariant : Result := Result + Value.VVariant^;
      vtWideString : Result := Result + '''' + WideString(Value.VWideString) + '''';
      vtInt64 : Result := Result + IntToStr(Int64(Value.VInt64));
    else
                      Result := Result + '_UNKNOWN_';
    end;
    if (Loop < Length(Arr)) then Result := Result + ', ';
  end;
  Result := Result + ']';
end;
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:48 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