AGB  ·  Datenschutz  ·  Impressum  







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

Pointer auf Richedit und Fontänderung

Ein Thema von der-C · begonnen am 13. Nov 2004 · letzter Beitrag vom 13. Nov 2004
Antwort Antwort
der-C

Registriert seit: 29. Okt 2004
68 Beiträge
 
Delphi 6 Professional
 
#1

Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 21:32
Hallo
ich habe ein Popupmenu welches in der Tag Property ein Pointer auf ein richedit hat.
nun will ich die Font(color,...) ändern aber es kommt bei der zuweisung immer eine AV
Delphi-Quellcode:
var
temprich:^trichedit;
begin
  TempRich := Pointer(Popupmenu1.Tag);
  if Fontdialog1.Execute then
  begin
    temprich.SelAttributes.Name := fontdialog1.Font.Name; // <--- Hier tritt die AV auf
  end;
end;
Was könnte das sein?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 21:41
Hi der-C,

ist mit dem FontDialog alles ok? Bei mir hat der Code funktioniert, allerdings habe ich direkt was zugewiesen, und nicht über den Fontdialog.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
der-C

Registriert seit: 29. Okt 2004
68 Beiträge
 
Delphi 6 Professional
 
#3

Re: Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 21:45
ja das habe ich auch ausprobiert das geht auch bei mir aber mit Fontdialog kommt AV,
das kann ich mir nicht erklären
wenn ich aber einem Richedit direkt ändere (also statt ^Trichedit nur TRichedit) dann gehts auch
vieleicht liegts ja an der addresse
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 21:50
Dein Fehler liegt hier:

temprich:^trichedit;

TRichEdit ist bereits ein Pointer.

Bei der Zuweisung zur Tag Eigenschaft musst du nur sowas machen:

Popup.Tag:=Integer(RichEdit1);

Beim Auslesen reicht es dann wenn du

TRichEdit(Popup.Tag) schreibst. Die Variable temprich muss dann auch als

temprich: TRichEdit

definiert sein.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 21:59
Hi der-C,

wird der FontDialog vllt. dynamisch erstellt? Und wie speicherst du die Adresse des Richedit ins Tag?
@jim-Raynor: dein Weg funktioniert leider nicht. Wenn die Adresse abgespeichert wird, dann musst du auch wieder mit einem Pointer drauf zugreifen. Du musst ihn aber nicht dereferenzieren.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#6

Re: Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 22:05
Warum sollte es nicht funktionieren? TRichEdit ist doch quasi ein Pointer. Nur wird es von Delphi geschickt versteckt, da keinerlei Referenzierung notwendig sind.

Du kannst ohne Probleme:

temprich:=TRichEdit(Popup.Tag) machen (zumindest war es in Delphi 5 noch so).
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 22:07
Hi jim_raynor,

also folgender Code funktioniert bei mir (D7) nicht:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Tag := Integer(@RichEdit1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var temprich: TRichEdit;
begin
  temprich := TRichEdit(Form1.Tag);
  FontDialog1.Execute;
  temprich.SelAttributes.Name := FontDialog1.Font.Name;
end;
Greetz
alcaeus

[add]
Ich sehe gerade, es funktioniert wenn ich Form1.Tag := Integer(RichEdit); schreibe.
[/add]
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
der-C

Registriert seit: 29. Okt 2004
68 Beiträge
 
Delphi 6 Professional
 
#8

Re: Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 22:10
es funktioniert so wie es jim_raynor gesagt hat
danke
sind alle von TWinControl abgeleitete Datendypen Pointer, woran erkenne ich was Pointer ist und was nicht?
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#9

Re: Pointer auf Richedit und Fontänderung

  Alt 13. Nov 2004, 22:11
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Tag := Integer(@RichEdit1);
end;
Das ist ja auch schon mal Falsch. Durch das @ bekommst du die Adresse der Variable RichEdit1 raus. Nicht die Adresse des Richedit.


Schreibst du:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Tag := Integer(RichEdit1);
end;
(ohne das @) funktioniert es auch in Delphi 7 ohne Probleme!

[edit]Alle Objekte werden als Pointer behandelt!!![/edit]
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  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 17:31 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