AGB  ·  Datenschutz  ·  Impressum  







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

TypeInfo von Variable abfragen

Ein Thema von himitsu · begonnen am 8. Dez 2009 · letzter Beitrag vom 8. Dez 2009
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

TypeInfo von Variable abfragen

  Alt 8. Dez 2009, 09:44
Halli Hallo,

kann man sich eigentlich auch die RTTI-Infos einer Variable besorgen
oder geht das immer nur über einen Typen?

Dieses ginge erstmal:
Delphi-Quellcode:
type
  TArr = array of String;
var
  Arr: TArr;
  Len: Integer;
begin
  //SetLength(Arr, 3);
  Len := 3;
  DynArraySetLength(Pointer(Arr), TypeInfo(TArr), 1, @Len);
end;
Aber ginge auch sowas?
Delphi-Quellcode:
var
  Arr: array of String;
  Len: Integer;
begin
  Len := 3;
  DynArraySetLength(Pointer(Arr), TypeInfo(Arr), 1, @Len);
end; // ^^^
Ich möchte da Einiges gern vereinfachen und da wäre sowas schon praktisch.
(und es geht um die alte RTTI, bis mindestens D2006 oder gar bis D7)

schonmal Danke, dat -chen


[edit]
OK, hat sich erledigt. So wie geplant ginge es eh nicht, da sich System.FinalizeArray, bzw. System._FinalizeArray oder Finalize inkl. TypeInfo-Angabe nicht direkt aufrufen läßt.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#2

Re: TypeInfo von Variable abfragen

  Alt 8. Dez 2009, 13:44
Zitat:
OK, hat sich erledigt. So wie geplant ginge es eh nicht, da sich System.FinalizeArray, bzw. System._FinalizeArray oder Finalize inkl. TypeInfo-Angabe nicht direkt aufrufen läßt.
Doch geht nach meiner Erfahrung. Probiere mal Assembler

Delphi-Quellcode:
asm
  call System.@FinalizeArray
// oder
  call @FinalizeArray
end;
Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: TypeInfo von Variable abfragen

  Alt 8. Dez 2009, 13:55
Nja, ich wollte den Code an ein paar Stellen übersichtlicher/kürzer gestalten und daher nicht gleich mit Assembler anfangen.
Abgesehn davon kann man sowas dann leider als nicht Inline-Funktion deklarieren, welches für eine Optimierung schon praktisch wäre.
PS: darum meinte ich auch "nicht direkt aufrufen läßt."

Es ging mir hier um dynamische Arrays und das Entfernen von Einträgen (in der Mitte).
Speziell wollte ich eine "Löschfunktion" für mehrere unterschiedliche Arrays implementieren, anstatt die "fast" gleiche Befehlsfolge mehrmals im Code zu haben.

Hatte da auch schon die Idee eventuell auf TList-Derivate umzusteigen, aber dieses wurde Aufrund einiger Nachteile verworfen, da die Vorteile nicht überwogen ... gleichstand, was wiederum den Aufwand einer Umstellung nicht unbedingt rechtfertigte.

Aber dennoch dank
$2B or not $2B
  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 14:24 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