anfänger zeiger-frage
-
hallo, zusammen!
ich hab mal ne frage. wieso geht das:
int x = 1; int *y = &x; *y = 2; ShowMessage(IntToStr(x));aber das nicht?:
int *pHeight = &MainForm->Image->Height; int *pWidth = &MainForm->Image->Width; pHeight -= 50; pWidth -= 50;hab ich was übersehn?
-
Du musst derefenzieren damit das funktioniert:
*pHeight -= 50; *pWidth -= 50;
-
ups, ja stimmt. aber soweit kam ich erst gar nicht. der meckert schon an der stelle:
int *pHeight = &MainForm->Image->Height;[C++ Fehler] main.cpp(93): E2027 Eine Speicheradresse muß verwendet werden
-
Gast123 schrieb:
int *pHeight = &MainForm->Image->Height; int *pWidth = &MainForm->Image->Width;Height und Width sind Eigenschaften (__property), hinter denen für Lese- und Schreibzugriff zwei unterschiedliche
Methoden oder Variablen (im Normalfall dann nur ein Variable) liegen. Wenn Du hier versuchst, die Adresse einer
Variablen zuzuweisen, kann das eigentlich nur schwerlich gut gehen.
Wenn ich mal die BCB-Hilfe zu TImage zitieren darf:BCB-Hilfe schrieb:
__property int Height = {read=FHeight, write=SetHeight, nodefault}; __property int Width = {read=FWidth, write=SetWidth, nodefault};Gruß,
Alexander
-
Na ja,
das lesen des Wertes funktioniert noch (ich denke mal weil direkt FHeight zurückgegeben wird):
x = &(Form1->Image1->Height);Allerdings kann über diese Variable keinen Wert zurückgeschrieben werden.
Aber sogar ich (dem hier schon 'Zeigergewurscht1el' vorgeworfen wurde), verwende für die Grunddatentypen nur in den allerseltesten Fällen Zeiger...
-
ganz zur not kannste ja immer noch folgendes machen
int *x = new int; *x = Form1->Image1->Height; // hier musste dann natürlich nur selber die variable löschen delete x; x = NULL;hoffe das hilft
Errraddicator
-
Hi!
int *x = new int;
*x = Form1->Image1->Height;// hier musste dann natürlich nur selber die variable löschen
delete x;
x = NULL;hää?? Und was soll das bringen?
kann ich ja gleich schreiben
int x = Form1->Image1->Height;...aber wenn du unbedingt Zeiger brauchst: Wie Joe schon geschrieben hat, mit Klammern funktionierts...
Robert