![]() |
Frage zum casten
1.)wenn ich eine Variable zu TObject caste und dann einer TObject Variable zuweise, muss ich diese erst Createn?
2.) wenn ich den oben beschriebenen Cast mache, was steht dann in der TObject Variablen? Der Wert oder Ein Zeiger auf die umgecastete variable? 3.) kann ich String zu TObject casten? (getestet hab ich das schon, es geht, aber String hat doch nicht wirklich was mit TObject zu tun, oder?) 4.)ich habe eine Function die mehrere Komponenten ausliest und den Wert zurückgibt. Die Datentypen welche die Funktion ausliesst (und zurückgibt) sind (momentan) TMemoryStream und String. Ich hab mir gedacht ich caste alles als TObject und gebs zurück, nur macht das bei Strings in verbindung mit TMemoryStrem Probleme (RichEdit). Gibt es bessere Varianten? |
Re: Frage zum casten
1) Nein, da es nur zeiger sind.
2) siehe erstens 3) theoretisch ja, da es nur Pointer sind. Praktisch nein, da Strings intern anders aufgebaut als Objekte und du damit auch keine Chance der Prüfungen mit is und as hast. 4) Es gibt auch einen TStringStream oder so, den du für die Strings nutzen kannst. Als Rückgabewert hast du dann immer TStream. |
Re: Frage zum casten
also die Memberfunktion liest ja z.B. TImage, TEdit, TCombo, TRichEit aus, jetzt brauch ich irgenteinen Datentyp womit ich das zurückgebe.
|
Re: Frage zum casten
Wenn es alles sichtbare Windows-Elemente sind dann eventuell TComponent, TControl oder TWinControl.
|
Re: Frage zum casten
1) kannst du machen du sagt nur das ein zeigern dann vom typ tobject ist. allerding wir es schutzverletzungen geben da eine var kein obj ist und z.b. keine eigenschaft "classname" hat.
2) der zeiger zeigt auf ein ungültiges object. bei zugriff schutzverletzung 3) ja, aber s.h. 2. 4) ja es gibt besser varianten, du kann z.b. ein designpattern nehmen. es biete sich hier ein proxy an. in verbindung mit "jim_raynor" antwort (tstream) und den proxy hast du dann eine schöne lösung. |
Re: Frage zum casten
hab mich etwas falsch ausgetrückt
ich muss von den oben genannten Datentypen die Werte(z.B. Bilder,Text) auslesen und in eine Datenbank speichern. Wenn ich die Strings aus den Edit, Combobox, Richedit -Feldern immer in Stream speichern kann, werde ich wohl diese Variante verwenden. Nur muss ich dann immer Blobfelder in der DB verwenden, statt varchar für text und blob für Bilder ich muss aus einem Feld von komponenten (sichtbar) die werte in irgentein gemeinsamen DatenTyp bringen um sie dann als Feld an die Funktion übergeben kann welche diese dann in der DB speichert. Hat da jemand ne Idee zu? @generic Was ist ein proxy? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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 by Thomas Breitkreuz