![]() |
Frage zu Pointer
Hi all,
folgendes Problem: Ich habe ein JvExpress Komponente. Dieser Komponente füge ich zur Laufzeit JvExpressButtons hinzu. Den hinzugefügten Buttons gebe ich über die Data-Eigenschaft Pointer vom Typ integer mit. Nun würde ich gerne die Werte der Pointer wieder auslesen, und das klappt nich so recht. Hier mal ein bisschen Code:
Delphi-Quellcode:
Könnt ihr mir da helfen ?
// JvExpress zur Laufzeit die Buttons hinzufügen...
procedure TForm1.FormShow(Sender: TObject); var jahr : integer; begin while not DataModule1.q_projekt.Eof do begin JvExpress1.AddButton; jahr := 10; JvExpress1.Buttons[JvExpress1.ButtonCount-1].Data := @jahr; DataModule1.q_projekt.Next; end; end; // Bei Click auf einen TButton soll der Wert eines JvExpressButtons ausgelesen werden... procedure TForm1.Button1Click(Sender: TObject); var pJahr : ^integer; begin pJahr := JvExpress1.Buttons[1].Data; showmessage(intToStr(pJahr^)); // Ausgabe ist nicht 10, sondern 15010828 end; Danke im vorraus, Ben |
Re: Frage zu Pointer
eventuell mal so probieren ... (nicht getestet)
Delphi-Quellcode:
// JvExpress zur Laufzeit die Buttons hinzufügen...
procedure TForm1.FormShow(Sender: TObject); var jahr : integer; begin while not DataModule1.q_projekt.Eof do begin JvExpress1.AddButton; jahr := 10; JvExpress1.Buttons[JvExpress1.ButtonCount-1].Data := Pointer(jahr); DataModule1.q_projekt.Next; end; end; // Bei Click auf einen TButton soll der Wert eines JvExpressButtons ausgelesen werden... procedure TForm1.Button1Click(Sender: TObject); begin showmessage(intToStr(integer(JvExpress1.Buttons[1].Data))); // Ausgabe ist nicht 10, sondern 15010828 end; |
Re: Frage zu Pointer
Hallo,
zur Erklärung der geposteten Lösung: Du speicherst einen Pointer auf eine lokale Variable. Diese ist aber außerhalb der Funktion nicht existent. Folglich zeigt der Pointer irgendwohin. Da ein Pointer aber genauso groß ist wie ein Integer, kannst Du einfach den Integer in den Pointer stopfen. Gruß xaromz |
Re: Frage zu Pointer
Vielen Dank für Lösung + Erklärung !
Edit: Könnt ihr mir noch sagen wie ich das gleiche mit nem String anstelle ? |
Re: Frage zu Pointer
Hallo,
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 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-2025 by Thomas Breitkreuz