AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Komponenten freigeben - Invalid pointer operation
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten freigeben - Invalid pointer operation

Ein Thema von roth · begonnen am 12. Okt 2006 · letzter Beitrag vom 17. Okt 2006
Antwort Antwort
Seite 3 von 4     123 4      
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#21

Re: Komponenten freigeben - Invalid pointer operation

  Alt 12. Okt 2006, 13:06
Danke für den Tipp!
So werde ich das umsetzen.

Gruß,
Christoph
  Mit Zitat antworten Zitat
roth

Registriert seit: 25. Nov 2005
Ort: -
72 Beiträge
 
#22

Re: Komponenten freigeben - Invalid pointer operation

  Alt 12. Okt 2006, 13:39
ich lasse den index [0] frei damit ich bessere übersicht habe...sollte ja nichts machen oder!?

und ja der fehler kommt auch wenn ich nichts mache beim beenden!?

  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#23

Re: Komponenten freigeben - Invalid pointer operation

  Alt 12. Okt 2006, 13:44
Dann liegt der Fehler wo anders.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  edttest: TEdit;
begin
  edtTest := TEdit.Create(self);
  edtTest.Parent := Form1;
end;
Geht wunderbar ohne Absturz beim Beenden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
roth

Registriert seit: 25. Nov 2005
Ort: -
72 Beiträge
 
#24

Re: Komponenten freigeben - Invalid pointer operation

  Alt 12. Okt 2006, 13:51
okey! trotzdem vielen dank für eure mühe!
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#25

Re: Komponenten freigeben - Invalid pointer operation

  Alt 17. Okt 2006, 12:45
Zitat von Muetze1:
Als letztes nun noch die Buttons aktualisieren. Durchlaufe die Miniklassenliste und erzeuge einen Button, wo die Instanz Nil ist. Ansonsten übernehme die Caption von der Activity (falls sie sich geändert hat) und positioniere die Buttons anhand der Position in der Miniklassenliste. Der Name der Buttons ist somit egal, da alles über die Instanzen geregelt wird.
Nun habe ich noch 2 Fragen:
- welchen (eindeutigen) Namen würdest Du den Buttons geben?
- Wie bekomme ich am einfachsten die Activity-Instanz des gedrückten Buttons heraus?

Gruß,
Christoph
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#26

Re: Komponenten freigeben - Invalid pointer operation

  Alt 17. Okt 2006, 13:18
Zitat von pertzschc:
- welchen (eindeutigen) Namen würdest Du den Buttons geben?
Gar keinen. Du hast eine Liste mit allen Instanzen, daher kannst du auch immer wieder in dieser nachschauen wenn du einen brauchst bzw. ansprechen willst. Daher ist der Name Schall und Rauch.

Zitat von pertzschc:
- Wie bekomme ich am einfachsten die Activity-Instanz des gedrückten Buttons heraus?
Sender beim Click gibt dir die Instanz des auslösenden Objektes mit, in deinem Fall also die Instanz des Buttons. Daher kannst du einfach durch deine Miniklassenliste laufen und vergleichen ob Sender = Buttoninstanz in deiner Miniklasse ist. Wenn dem so ist, dann hast du in der Miniklasse auch die Activity Instanz parat.
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#27

Re: Komponenten freigeben - Invalid pointer operation

  Alt 17. Okt 2006, 13:55
Zitat von Muetze1:
Sender beim Click gibt dir die Instanz des auslösenden Objektes mit, in deinem Fall also die Instanz des Buttons. Daher kannst du einfach durch deine Miniklassenliste laufen und vergleichen ob Sender = Buttoninstanz in deiner Miniklasse ist. Wenn dem so ist, dann hast du in der Miniklasse auch die Activity Instanz parat.
Ja, okay soweit verstanden. Gib mir bitte noch eine Zeile Coding wie ich die Instanzen vergleichen kann, ich blicke es gerade nicht.

Danke,
Christoph
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#28

Re: Komponenten freigeben - Invalid pointer operation

  Alt 17. Okt 2006, 14:01
Delphi-Quellcode:
Procedure TFormX.ButtonXClick(Sender: TObject);
Var
  i: Integer;
  lActivity: TActivity;
Begin
  lActivity := Nil;

  For i := 0 To Pred(Miniklassenlist.Count) Do
    If ( Miniklassenliste[i] As TMiniklasse ).Button = Sender Then
    Begin
      lActivity := ( Miniklassenliste[i] As TMiniklasse ).Activity;
      Break; // Weiter brauchen wir nicht zu suchen, haben es ja gefunden
    End;

  If Assigned(lActivity) Then
    ShowMessage('Die Activity war ' + lActivity.Blubb ); // was du auch immer von den Daten der Klasse anzeigen lassen könntest...
End;
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#29

Re: Komponenten freigeben - Invalid pointer operation

  Alt 17. Okt 2006, 14:49
Danke!!!
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#30

Re: Komponenten freigeben - Invalid pointer operation

  Alt 17. Okt 2006, 15:06
Das schaut mir verdächtig nach ner ActionList aus.
Schau mal in der IDE nach, da gibt es eine Komponente namens TActionList. In diese TActionList kannst Du TActions einfügen. Diese sind sozusagen Deine Applikationsereignisse. Hier gibt es vorgefertigte, wie FileIO, aber auch die Möglichkeit, eigene Events an die Actions zu knüpfen.
Nun zu den Knöpfen. Diese haben eine Property namens Action. Falls Du eine deiner Actions in der ActionList dem Knopf zuweist, ruft dieser dann die execute-Methode dieser Action. Um die Freigabe musst Du Dich überhaupt nicht kümmern. Entweder der Knopf geht bei der Freigabe der Form flöten (vorrausgesetzt Du hast diese als Owner anggegeben) oder Du gibst ihn von Hand frei. Hier würde ich nicht empfehlen, die Knöpfe separtat nochmal zu speichern, sondern die Controls-Liste des jeweiligen Parents durchzugehen, bis der entsprechende Knopf gefunden ist und den hier freizugeben.
Die Sache mit den Actions hat folgenden Vorteil: Du kannst diese Actions auch als Menü darstellen lassen bzw. die execute-Methode direkt aus dem Programm rufen. Ausserdem bietet Delphi die Möglichkeit, die Anordnung des Menüs usw. auch vom Nutzer vornehmen zu lassen und speichert diese auf Platte.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 13:00 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