-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
3. Feb 2021
Ja, das klingt fast so als wäre das nötig. Kannst du mir erklären wie ich das machen kann? Oder hast du ne Anleitung im WWW, die was taugt?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
3. Feb 2021
Ja, eines dieser Fehlerprotokolle zeigt eine Rekursion, da geb ich dir Recht. Ich hab aber genau so viele Berichte mit Rekursion, wie solche, bei denen der Fehler nicht rekursiv geschieht, sondern wo es direkt beim ShowModal knallt. Ich hab - zugegeben - nicht geschaut, welchen Bericht ich da jetzt genommen hab, weil die Zeile, wo es knallt, exakt identisch ist. Ich kann dir aber beim besten...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
2. Feb 2021
Ja ok, das ist klar, das ist auch kein tatsächlicher Memory Leak, da der Owner sich ja um das Aufräumen kümmert. Ein TInitFile hat keinen Owner, ergo sollte man es nach dem Erzeugen auch wieder freigeben, sonst gibt es einen Memory Leak. Und in meinem Fall gibt's dann sogar noch eine AV oben drauf :roll:
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
2. Feb 2021
Ok, d.h. ich hab offenbar tatsächlich keine MemLeaks? :shock:
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
2. Feb 2021
Also ich hab das jetzt eingerichtet. Und bei mir, wenn ich das auf dem Entwicklungsrechner laufen lasse, wird beim Shutdown offenbar nicht ein einziger MemLeak entdeckt. Das kann schon nicht sein :lol: Also irgendwo ist immer einer ;)
Nur weiß ich nicht, was ich noch groß machen soll. FastMM4 ist als erste Unit im DLL-Projekt eingebunden. Muss das zusätzlich auch in die aufrufende Applikation...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
1. Feb 2021
Ja, das Problem mit den Haltepunkten :D Dieser Fehler tritt nur zur Laufzeit bei Releases auf. Offenbar nicht spezifisch an einem Rechner oder bei einem bestimmten Programm (aktuell verwenden 2 oder 3 Programme diese DLL) und auch nicht User-bezogen. Ich will es mal so formulieren: von 30 Mal, wo die DLL aufgerufen wird, knallt es 10 Mal. Ich erhalte ja dann von madExcept den Dump, den hatte ich...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
1. Feb 2021
Ist alles CDECL.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
1. Feb 2021
D.h. irgendwie sollte ich es mit FreeAndNil probieren, aber irgendwie auch nicht? :wall:
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
1. Feb 2021
Auch wenn ich Threads an sich ganz gern habe, ist das in dem Fall auszuschließen. Ich hatte ja bereits meinen Code gepostet und da war nix von irgendwelchen Threads und die lokale Variable ist auch echt nur lokal.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
1. Feb 2021
Also PChar in der Anwendung ist idetnisch zu PChar in der DLL, ja :) Es ist mit ein und derselben Delphi-Version kompiliert und beide Male als Win32.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
28. Jan 2021
Also ich hab das jetzt auch ausprobiert und es ist derselbe Fehler, wie wenn ich das via Application.Handle setze. Wenn ich weder das eine noch das andere mache, erhalte ich zumindest keinen invalid handle value Fehler mehr :) Also das wird es dann auch nicht sein, so wie himitsu das auch schon vermutet hat.
Und was ich auch ausschließen kann, war meine Vermutung, dass der parallele Zugriff...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
28. Jan 2021
Also hier gibt es keine Probleme. Ich caste alles entsprechend, so wie dummzeuch es ja beschrieben hat. I.d.R. werden aber die PChar-Variablen unverändert einfach durch gereicht, von daher gibt es hier auch keine Veränderungen. Aber sollte es in einem anderen Fall dazu kommen, wird natürlich eine lokale Kopie erzeugt und mit der weiter gearbeitet.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
28. Jan 2021
Also nur, damit ich das klarstelle: wenn ich den Erben einer TForm-Klasse (hier das Objekt TFormDynamicSearchDialog) erzeuge, brauche ich keine Unit Vcl.Forms einbinden; das geht auch ohne. In derjenigen Unit, wo ich die Klasse TFormDynamicSearchDialog allerdings implementiere, da brauche ich das natürlich, sonst kennt Delphi ja den Typ TForm nicht.
Ich hab jetzt aber dort, wo ich den Erben...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
27. Jan 2021
Aus diesem Grund setze ich die Variable zuvor auf NIL, in der Annahme, dass die Zuweisung der Variable ebenfalls unterbrochen wird, wenn eine Exception im Konstruktor-Prozess ausgelöst wird. In diesem Fall sollte aber sowieso der innere Check von "Free" einschreiten, das hatten wir ja zuvor schon ;) Ist halt doppelt abgesichert :)
Das was du jetzt erwähnst, würde ja bedeuten, dass der "eigene"...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
27. Jan 2021
Ich hab mir das mal zu Gemüte geführt. Hab das meiner Meinung nach auch korrekt umgesetzt, allerdings kommt jetzt irgendwann im Erstellungsprozess die Exception
Exception-Klasse EOSError mit Meldung
System Error. Code 1400. Ungültiges Fensterhandle.
Application war auch zu Beginn nicht verfügbar, da die Unit Vcl.Forms nicht eingebunden war. Ich möchte jetzt sicher gehen, dass ich das...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
27. Jan 2021
Dazu noch ein kleiner Einwurf: ja, für System-Komponenten mag das alles zutreffend sein. Ich vertrete allerdings die Meinung, dass man so viel Routine wie möglich, auf die einfachste Art und Weise wie möglich bekommen soll - keep the common case simple and fast.
Ihr glaubt gar nicht, wie häufig ich schon bei Konstruktor-Aufrufen Exceptions bekommen habe; daher stehen die immer innerhalb des...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
27. Jan 2021
Wenn ich da mal noch einen Einfall anmerken dürfte. Ihr seht ja, dass ich die Ini-Datei-Instanz erzeuge, aber dafür einen im klassenweiten Kontext gültigen Wert verwende (FIniFile). Wie verhält sich das bei Ini-File-Objekten, wenn mehrere Instanzen auf ein und dieselbe physische Ini-Datei zugreifen? Wird da intern nur eine gültige Instanz erzeugt (so wie bei Interfaces) oder sind das mehrere...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
27. Jan 2021
Um auf Blup's Post separat zu antworten:
1) Ich übergebe keine Strings. Auch keine WideStrings (auch wenn ich das hier das erste mal lese, aber ist logisch), sondern ich verwende PChar-typen. Das wird ja an unterschiedlichen Stellen so empfohlen, nicht zuletzt im Text des Code-Wizards:
2) DAS ist in der Tat interssant und eine komplette Neuheit für mich. ICh hab mich mit dem Thema TForms...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
27. Jan 2021
Aus genau solchen Gründen hab ich mir angewöhnt, Variablen explizit auf NIL zu setzen und im Finally-Block nochmals explizit auf NIL zu prüfen. Die Ini-File-Instanz per se ist nicht das Problem hier. Eher, dass es innerhalb der DLL aufgerufen wird. Wir verwenden System.IniFiles an zig verschiedenen Stellen und noch nie kam es zu einem Fehler dieser Art. Die TForm-Komponente, die jetzt in der DLL...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
27. Jan 2021
Ja, in der Zeile 602 steht exakt das :) Ich hab es auch als Screenshot mal anbei mit geschickt.
Also wenn ich den Code ausklammere, dann wird auch kein Fehler kommen. Ich versteh den Sinn an der Stelle nicht so ganz. Ich mein: was ich nicht aufrufe, macht auch keine Probleme, oder? Was soll denn an der Stelle der Nutzen sein, würdest du mir das mal erläutern?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
27. Jan 2021
Hallo alle zusammen,
vielen, vielen Dank für die Fülle an Infos und Erläuterungen. Ich versuche mal in einem einzigen Post noch zusätzlich Infos zu meinem Fall zu geben. Ich hoffe, ich vergesse nichts ;)
Es wurde nach dem Stacktrace gefragt, den ich gerne hier an den Post ran hänge. Und zwar tue ich das in Form des Bugreports, den ich von madExcept bekommen habe. Ich hab mal diejenigen...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by TheSledgeHammer,
26. Jan 2021
Liebes Forum,
die letzte Zeit ereilten mich diverse madExcept-Mails bzgl. eines offenkundigen Problems mit einer Ini-File-Instanz des Objekts System.TIniFile. Das Interessante daran: laut madExcept Callstack soll das Problem beim Zerstören der Instanz auftreten. Es hagelt dann so eine wunderbar aussagekräfte Fehlermeldung a la
"Access violation at address Read of address ".
Jetzt habe...