AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Wie erkennen ob Pointer ein Object, String, Array oder Record ist

Wie erkennen ob Pointer ein Object, String, Array oder Record ist

Ein Thema von backdraft · begonnen am 24. Sep 2021 · letzter Beitrag vom 27. Sep 2021
Antwort Antwort
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
291 Beiträge
 
Delphi 10.4 Sydney
 
#1

Wie erkennen ob Pointer ein Object, String, Array oder Record ist

  Alt 24. Sep 2021, 22:59
Delphi-Version: 10.4 Sydney
Hallo,

weiss jemand zufällig, ob es eine Möglichkeit gibt zu erkennen, ob ein Pointer auf ein Object, einen String, ein Array oder einen Record zeigt?
Ich nutze die aktuelle Delphi Version 11.

Danke
Oliver
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.096 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Wie erkennen ob Pointer ein Object, String, Array oder Record ist

  Alt 25. Sep 2021, 00:00
Nein, das ist nicht möglich, denn ein Pointer ist ja nur eine Variable mit einer Speicheradresse.

Was möchtest du denn erreichen?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.603 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Wie erkennen ob Pointer ein Object, String, Array oder Record ist

  Alt 25. Sep 2021, 09:09
Objekt, String und dynamisches Array kann man "versuchen" über eine Heuristik zu erkennen,
aber mit False-Positive sollte man da rechnen, falls irgendwas dem Erkennungsmuster entspricht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.327 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Wie erkennen ob Pointer ein Object, String, Array oder Record ist

  Alt 27. Sep 2021, 09:57
Für solche Fälle gibt es den Typ Variant.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.695 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Wie erkennen ob Pointer ein Object, String, Array oder Record ist

  Alt 27. Sep 2021, 10:27
Für solche Fälle gibt es den Typ Variant.
Oder man pflegt selber ein Flag (normalerweise ein Enum), auf was der Pointer aktuell zeigt.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.603 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Wie erkennen ob Pointer ein Object, String, Array oder Record ist

  Alt 27. Sep 2021, 14:50
Oder man pflegt selber ein Flag (normalerweise ein Enum), auf was der Pointer aktuell zeigt.
Dann ist es am Ende aber auch immer ein Zeiger auf einen Record,
oder man speichert den Flag (Enum) neben dem Pointer, als Eigenschaft was dann im Pointer drin ist.

Weil wo im String oder sonstirgendeinem "Pointer" legst sonst deinen Flag/ENUM ab?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.695 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Wie erkennen ob Pointer ein Object, String, Array oder Record ist

  Alt 27. Sep 2021, 19:28
Oder man pflegt selber ein Flag (normalerweise ein Enum), auf was der Pointer aktuell zeigt.
Dann ist es am Ende aber auch immer ein Zeiger auf einen Record,
oder man speichert den Flag (Enum) neben dem Pointer, als Eigenschaft was dann im Pointer drin ist.

Weil wo im String oder sonstirgendeinem "Pointer" legst sonst deinen Flag/ENUM ab?
Ja, klar - ich meinte in geeigneter Form daneben. Das wäre halt weniger "schwergewichtig" als z.B. ein Variant und u.U. auch typsicherer, weil man den Enum-Typ maßschneidern kann. Konkret hängt es natürlich von dem Umständen ab.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.603 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Wie erkennen ob Pointer ein Object, String, Array oder Record ist

  Alt 27. Sep 2021, 19:49
TValue (System.RTTI)

Oder TVarRec (array of const), aber das kann auch keine Records,
denn bei einem Record oder einem typitiserten Pointer, da müsste man zusätzlich auch noch die TTypeInfo mit speichern.
Ebenfalls bei statischen Arrays, wobei dynamische Arays und LongStrings (AnsiString, UnicodeString und Ableitungen) ihre TypeInfo, bzw. CharSize+CodePage in sich tragen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (27. Sep 2021 um 19:54 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 03:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf