Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponete ab und an installations-problem (https://www.delphipraxis.net/91755-komponete-ab-und-installations-problem.html)

Corelgott 9. Mai 2007 12:00


Komponete ab und an installations-problem
 
Hi @ all,

ich habe eine Paket Componenten selbst geschrieben (Alles in D7). Darunter sind ca. an die 20 Komponeten, die teilweise auch threads enthalten. Der Code ist an sich sauber. Ich habe laut fastmm4 keine memory leaks. Laut meiner debug-klasse werden alle Objekte die zur laufzeit erstellt werden auch wieder ordentlich freigegeben. (simples loggin in einem file & ganz einfacher adressen-vergleich per hand bzw. per marker ^^)

Nun kommt das Problem: (An dem ich echt verzweifel)

Ich kann das Package compilieren ohne fehler (nur 2 bis 3 warnungen wegen überschriebener constructoren). Ich kann die Komponeten installieren und sehe sie auch in der Palette. Ich kann Sie aktuallisieren und somit das gesammte pack neu übersetzen lassen.

ABER bei 3. oder 4. mal, wenn ich das pack neu compiliere steigt delphi mit einer Zugriffsverletzung unter großem gezehter komplett aus. Wenn ich delphi neu starte und das wieder hole kann ich wieder ein paar mal neu compilieren und ende im gelände.

D.h. ich hänge so zu sagen in der Delphi-Entwurfszeit, in der meine Komponeten eigentlich nix machen... Ich bekomme keine infos über eventuelle memoryleaks... Ich vermute mal, dass ich irgendwo etwas freen will, was nicht mehr existiert. Ich habe alle meine Free-Routinen & Destructoren schon mehrfach durchgesehen finde aber nichts.

Ich habe den BorlandMM ersetzt durch FastMM, aber das änder weder am angezeigten fehler etwas noch gibt es mir irgendeine hilfe in diesem Fall.

Ich kann den Fehler zur Runtime, z.b. in einem Programm, welches meine komponeten benutzt und alle funktionen anspricht (automaitsierte Test-Suite) nicht reporduzieren.

Unterm Strich: Wie kann man Komponenten zur ide-"Designtime" (also kompo-laufzeit in der ide) debuggen!?

Ich bin für alle Kritik, Anregungen, Idee und Kommentare sehr dankbar!

cya
Corelgott

ps: Der wenig aussagekräftige error-text:

Delphi 7: delphi32.exe - Fehler in Anwendung
---------------------------
Die Anweisung in "0x4003ba4f" verweist auf Speicher in "0x07aac904". Der Vorgang
"read" konnte nicht auf dem Speicher durchgeführt werden.

mkinzler 9. Mai 2007 12:02

Re: Komponete ab und an installations-problem
 
Zitat:

Ich kann das Package compilieren ohne fehler (nur 2 bis 3 warnungen wegen überschriebener constructoren).
Das heißt das nicht deine Konstruktoren, sondern die der Superklasse aufgerufen werden.

Corelgott 9. Mai 2007 12:22

Re: Komponete ab und an installations-problem
 
[Warnung] untBaseControl.pas(44): Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TCustomControl'

Liegt daran, dass der neue constructor andere Parameter hat...
D.h. aber nicht, dass er nicht aufgerufen wird...

oder verstehe ich völlig falsch?

mkinzler 9. Mai 2007 12:35

Re: Komponete ab und an installations-problem
 
hast du den Konstruktor der Superklasse im Konstruktor aufgerufen (inherited)?

Corelgott 9. Mai 2007 13:29

Re: Komponete ab und an installations-problem
 
jup ich rufe den eltern-constructor per "inherited Create(richtige parameter mit sinn)" auf
genauso beim destructor auch

Corelgott 9. Mai 2007 14:12

Re: Komponete ab und an installations-problem
 
also ich habe gerade mal ein BDS 06 auf meine Kiste installieren lassen (Danke IT!)

das schmeisst mir, wenn es alles compiliert hat folgende exception:

datei nicht gefunden

Code:
 + $43[51F35B06]{rtl100.bpl } Classes.Classes.TFileStream.Create (Line 5486, "classes.pas" + 11) + $43
 + $B[51F359C4]{rtl100.bpl } Classes.Classes.TFileStream.Create (Line 5468, "classes.pas" + 2) + $B
 + $B[51FE9486]{vcl100.bpl } Graphics.Graphics.TGraphic.LoadFromFile (Line 3724, "Graphics.pas" + 1) + $B
 + $10[20B64D89]{coreide100.bpl} ObjectRepos.ObjectRepos.TBaseRespositoryItem.LoadIcon (Line 779, "ObjectRepos.pas" + 8) + $10
 + $2[20B64FC9]{coreide100.bpl} ObjectRepos.ObjectRepos.TBaseRespositoryItem.LoadBasicData (Line 822, "ObjectRepos.pas" + 25) + $2
 + $4[20B686DC]{coreide100.bpl} Template.Template.TProjectRepositoryItem.LoadData (Line 276, "Template.pas" + 3) + $4
 + $7[20B62CEE]{coreide100.bpl} ObjectRepos.ObjectRepos.TObjectRepository.AddRepositoryItemFromNode (Line 174, "ObjectRepos.pas" + 11) + $7
 + $3F[20B6339C]{coreide100.bpl} ObjectRepos.ObjectRepos.TObjectRepository.LoadRepository (Line 307, "ObjectRepos.pas" + 45) + $3F
 + $7[20B6E44F]{coreide100.bpl} Gallery.Gallery.LoadGallery (Line 620, "Gallery.pas" + 17) + $7
 + $3[20CAC6C1]{coreide100.bpl} PaletteNewItems.PaletteNewItems.TToolPaletteNewItems.LoadNewItems (Line 367, "PaletteNewItems.pas" + 8) + $3
 + $2[20CACA25]{coreide100.bpl} PaletteNewItems.PaletteNewItems.TToolPaletteNewItems.ReloadItems (Line 432, "PaletteNewItems.pas" + 4) + $2
 + $2[20CAC3FF]{coreide100.bpl} PaletteNewItems.PaletteNewItems.TToolPaletteNewItems.BeforeEndupdate (Line 291, "PaletteNewItems.pas" + 3) + $2
 + $9[21BA9049]{delphicoreide100.bpl} ApplOpts.ApplOpts.TApplicationOptions.UnprepareEdit (Line 107, "Applopts.pas" + 27) + $9
 + $C[21BB5CE1]{delphicoreide100.bpl} BasePasProjOpts.BasePasProjOpts.TProjOptsManager.InstallPackage (Line 1855, "BasePasProjOpts.pas" + 17) + $C
 + $3[21BB671B]{delphicoreide100.bpl} BasePasProjOpts.BasePasProjOpts.TProjectOptions.InstallPackage (Line 2240, "BasePasProjOpts.pas" + 0) + $3
 + $5[21BA7F30]{delphicoreide100.bpl} PkgContainers.PkgContainers.TStdPackageProjectContainer.CommandHandler (Line 141, "PkgContainers.pas" + 4) + $5
 + $6[20BD4A0A]{coreide100.bpl} Containers.Containers.TStdProjectContainer.CommandHandler (Line 1783, "Containers.pas" + 0) + $6
 + $5[5202F0AD]{vcl100.bpl } Menus.Menus.TPopupList.MainWndProc (Line 3374, "Menus.pas" + 2) + $5
 + $0[51F40BB0]{rtl100.bpl } Classes.Classes.StdWndProc (Line 11572, "classes.pas" + 8) + $0
 + $6A[7E368731]{USER32.dll } GetDC + $6A
 + $14A[7E368811]{USER32.dll } GetDC + $14A
 + $122[7E3689C8]{USER32.dll } GetWindowLongW + $122
 + $A[7E3696C2]{USER32.dll } DispatchMessageA + $A


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 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