AGB  ·  Datenschutz  ·  Impressum  







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

Die IDE-Killer-Komponente

Ein Thema von Dani · begonnen am 11. Jun 2005 · letzter Beitrag vom 20. Jun 2005
Antwort Antwort
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#1

Die IDE-Killer-Komponente

  Alt 11. Jun 2005, 12:14
Servus,

Wer kann mir helfen meine IDE-Killer-Komponente zu testen? Benötigt wird nur die Hier im Forum suchendpCollection Unit. Und so geht's: Komponente aus Anhang installieren, TKillerEdit auf Formular platzieren, Areas Eigenschaft auswählen und Eintrag hinzufügen. Die Oberfläche sollte dann einfrieren und irgendwann meldet Delphi einen Stack-Overflow. Würde gerne wissen ob nur meine IDE einfriert oder ob da tatsächlich etwas mit der Komponente nicht in Ordnung ist.

Gruß,
Dani
Angehängte Dateien
Dateityp: pas killerkompo_887.pas (9,5 KB, 20x aufgerufen)
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Die IDE-Killer-Komponente

  Alt 11. Jun 2005, 12:24
warum erstellst du die Komponente nicht einfach dynamich und debuggst dann warum ein StackOverflow kommt? Ich tippe mal du versuchst in einer SetMethode das Property erneut zu setzen womit du wieder in diese SetMethode reinkommst, ist aber nur eine Vermutung (ist ein sehr häufiger Fehler).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Die IDE-Killer-Komponente

  Alt 11. Jun 2005, 12:47
würd ich auch so sehen. Ich würd den Fehler hier vermuten:

Delphi-Quellcode:
procedure TDrawAreas.SetDrawItem(Index: Integer; Value: TDrawArea);
begin
  Items[Index].Assign(Value);
end;
damit rufst du immer wieder die Setmethode auf. da fehlt das inherited, wie bei der getmethode.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Die IDE-Killer-Komponente

  Alt 11. Jun 2005, 13:27
Zitat von Keldorn:
würd ich auch so sehen. Ich würd den Fehler hier vermuten:

Delphi-Quellcode:
procedure TDrawAreas.SetDrawItem(Index: Integer; Value: TDrawArea);
begin
  Items[Index].Assign(Value);
end;

damit rufst du immer wieder die Setmethode auf. da fehlt das inherited, wie bei der getmethode.

Mfg Frank
Edita hab ich mich zu früh gefreut, daran liegts wohl nicht. In Assign werden zwar properties des Items gesetzt, aber das dürfte eigentlich nicht dazu führen, dass SetDrawItem nochmal aufgerufen wird. Mal schauen ob der Overflow auch zur laufzeit kommt.

Edit#2: Zur Laufzeit gibts keinen Buffer Overlfow und auch keinen Hänger.
Delphi-Quellcode:
var C: TKillerEdit;
    A: TDrawArea;
begin
 C := TKillerEdit.Create(Self);
 C.Parent := Self;
 A := C.Areas.Add;
 A.Comment := 'Dies ist ein Test';
 C.Area[0].DrawRect := Rect(0, 0, 2399, 2939);
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Die IDE-Killer-Komponente

  Alt 12. Jun 2005, 18:59
Wenn mir jemand bestätigen könnte, dass sich nicht nur meine IDE aufhängt, das wär schon sehr hilfreich
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Sergej

Registriert seit: 12. Jun 2003
Ort: Stuttgart
169 Beiträge
 
#6

Re: Die IDE-Killer-Komponente

  Alt 12. Jun 2005, 19:08
Tag. Kanns bestätigen. Hängt auch bei mir.



Greetz Sergej
Ceterum censeo cartaginem esse delendam
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Die IDE-Killer-Komponente

  Alt 12. Jun 2005, 19:55
Hallo,
ich würde TmxJsCollection durch TCollection ersetzen. Die dpCollection unit wurde entwickelt, damit man die TCollection-Fähgikeiten auch außerhalb von Komponenten zur Verfügung hat. Die dpCollection unit wurde nicht entwickelt um sie innerhalb von Komponenten einzusetzten.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Die IDE-Killer-Komponente

  Alt 12. Jun 2005, 21:51
Zitat:
Hallo,
ich würde TmxJsCollection durch TCollection ersetzen. Die dpCollection unit wurde entwickelt, damit man die TCollection-Fähgikeiten auch außerhalb von Komponenten zur Verfügung hat. Die dpCollection unit wurde nicht entwickelt um sie innerhalb von Komponenten einzusetzten.
Das hat aber bisher ganz gut funktioniert. Warum auch nicht? TCollection unterstützt von sich aus kein speichern der Items in Streams, das ist aber letztendlich der Zweck dieser DrawAreas.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Die IDE-Killer-Komponente

  Alt 13. Jun 2005, 11:33
Der Hänger bleibt trotz Umstellung auf TCollection. Vielleicht in Bug in der IDE?
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Die IDE-Killer-Komponente

  Alt 20. Jun 2005, 00:28
Delphi-Quellcode:
   
 {...}
 published
   property OwnerObj: TPersistent read FOwnerObj write FOwnerObj;
 end;
Da OwnerObj die zugehörige TCollection ist, habe ich hier eine ganz vorzügliche ressourcenterminierte Quasi-Endlosrekursion entworfen. Fiel mir auf, als ich bei einem Nachbau der Klasse zu faul war, im Constructor die Werte zu initialisieren und plötzlich OwnerObj im Objektinspektor sichtbar wurde.

Hab nur 9 Tage gebraucht, das rauszufinden.
Dani H.
At Least I Can Say I Tried
  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 08:26 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