AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi pointer auf TButton - verständtnis problem
Thema durchsuchen
Ansicht
Themen-Optionen

pointer auf TButton - verständtnis problem

Ein Thema von cherry · begonnen am 26. Feb 2009 · letzter Beitrag vom 26. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:17
hallo

ich habe folgenden code:

Delphi-Quellcode:

type
  Tabulator = record
    hwnd: THandle; // contains handle of a window
    P: ^TEButton; // contains pointer of the tabulator button
  end;

  ...

var
  Tabs: array of Tabulator;

procedure TForm1.AddTab(name: String; hwnd: THandle; FormCount: Integer);
var
  Current: Integer;
  NewButton: TEButton;
begin
  // increase pointer array
  SetLength(Tabs, Length(Tabs) + 1);
  Current := Length(Tabs)-1;

  // create button, positionize button
  NewButton := TEButton.Create(Form1);
  NewButton.Parent := ToolBar1;
  NewButton.OnClick := OnTabButtonClick;

  Tabs[current].P := @NewButton;
  Tabs[current].hwnd := hwnd;
end;

function TForm1.RemoveTab(hwnd: Cardinal): Boolean;
var
  I: Integer;

begin
  result := false;
  for I := 0 to Length(Tabs) -1 do
  begin
    if Tabs[i].hwnd = hwnd then
    begin

      Tabs[i].P^.Caption := 'homo'; <--- Zugriffsverletzung !!!
// Tabs[i].hwnd := 0;
// Tabs[i].P := nil;
      result := True;
      break;
    end;
  end;
end;
Habe die Zeile markiert wo ich die "Zugriffsverletzung" erhalte. Irgendwas ist mir noch nicht ganz klar mit pointern...
Kann mit jmd helfen? Warum kriege ich da eine Zugriffsverletzung?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#2

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:28
TButton ist im Prinzip schon ein Pointer ... nimm einfach direkt TEButton.

Delphi-Quellcode:
Tabulator = record
  hwnd: THandle; // contains handle of a window
  P: TEButton; // contains pointer of the tabulator button
end;
Delphi-Quellcode:
Tabs[current].P := NewButton;

Tabs[i].P.Caption := 'homo';
PS: @NewButton zeigt auf die Variable NewButton und nicht auf den Button selbst und diese Variable gibt es nicht mehr, nachdem die Prozedur dazu beendet wurde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:29
Ein TButton ist schon eine Referenz (Zeiger)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:30
Zitat von himitsu:
TButton ist im Prinzip schon ein Pointer ... nimm einfach direkt TEButton.

Delphi-Quellcode:
Tabulator = record
  hwnd: THandle; // contains handle of a window
  P: TEButton; // contains pointer of the tabulator button
end;
hmm, kappier ich nicht?! wieso ist das schon ein Pointer? und trotzdem, warum geht meine version nicht?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#5

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:32
Eine Objektinstanz ist sozusagen ein Zeiger auf die Daten des Objektes.

[info] hatte oben etwas dazueditiert
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#6

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:34
Zitat von himitsu:
Eine Objektinstanz ist sozusagen ein Zeiger auf die Daten des Objektes.

[info] hatte oben etwas dazueditiert
hmm, wenn das so ist für was braucht man dann Pointer in Delphi überhaupt? (also ich meine selbst "erstellte")
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:35
Für Klassen nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#8

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:36
Zitat von mkinzler:
Für Klassen nicht.
Also zum Beispiel für Typen und Variablen dann?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:37
Für elementare Datentypen und für Records brauch man sie ggf.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#10

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 15:38
Zitat von Neutral General:
Für elementare Datentypen und für Records brauch man sie ggf.
hmm, also sind Pointer in Delphi eher selten?!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:50 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