-
Forum: Programmieren allgemein
Delphi
by SearchBot,
29. Jul 2022
Okay :thumb:
Ich habe also eure Anregungen im Quelltext beachtet und so ein paar Macken beheben können, Leaken tut es am Ende immernoch, aber es führt nicht zum Absturz des Programms.
Wenn sich das TJSONzeugs innen also selbst aufräumt, kann ich als Unwissender kaum etwas dagegen machen, wenn es dann trotzdem leakt. :wink:
Ich gebe also nur das Objekt free, das ich zu Beginn create habe....
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
28. Jul 2022
Okay, Entschuldigung.
Ich meinte mit "blöd", daß dieser Typ für mich neue Schwierigkeiten verursacht, einfach ausgedrückt.
Für alle anderen und jedes neue Projekt ist es bestimmt ein sehr hilfreicher und zukunftsorientierter Zeichenketten-Typ.
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
28. Jul 2022
Ja, da hast du recht, mein Code ist schon ein wenig hingeschmiert :oops:
Ich habe es schon fast vergessen gehabt, daß da noch was war mit... - wenn man ältere Quelltexte verwendet und Delphi zwischenzeitlich "String" als UnicodeString versteht, ich aber weiterhin in AnsiString denke.
Also habe ich im alten Code nun alles, was Char und String hieß, spezifiziert (char -> AnsiChar; String ->...
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
28. Jul 2022
Vielen Dank für den Hinweis. Hab das häufiger im Quelltext falsch gemacht und jetzt korrigiert.
Aber es ändert nichts am Verhalten vom FastMM -
Es wirft mir eine Exception - Zugriffverletzung bei Adresse... und wenn ich dort schaue, mitten im CPU-Fenster ist es in "@UStrAsg" :gruebel: Weiß nicht, was das ist... irgendwas mit UniCodeString in der Nähe - "Lesen von Adresse 8B2E2583".
...
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
27. Jul 2022
Das TJSONgedöns hat mir irgendwie zuviel nicht nachvollziehbares Eigenleben.
Ich hab jetzt alle Freigaben und das Owned entfernt und gebe ganz zum Schluss nur das json.free
Jetzt schaue ich mir an, was FastMM dazu entdeckt, wie mir Himitsu empfohlen hat.
Und je, irgendwie ist das mit dem TJSONObject trotzdem nicht gut :roll: - ich habe die Funktion damit nur 1x aufgerufen und Auszug:
13 -...
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
27. Jul 2022
Ich habe mir jetzt das FastMM vom Github geholt und eingebaut.
Und damit auch schon ein MemLeak behoben in einer Komponente (PageExtControl, die ich sehr gerne verwende (da wurde TTabColors im destroy nicht wieder freigegeben, aber das nur nebenbei)).
Mit FastMM habe ich jetzt aber ein ganz neues unerklärliches Problem :pale:
procedure OpenGrid(var...
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
26. Jul 2022
Hab das TJSONArray nicht auf owned gesetzt.
@Himitsu: :oops: so tief will ich garnicht reingehen, aber trotzdem danke für diesen Tiefenblick.
Was wird eigentlich alles freigegeben, wenn die procedure zu Ende ist, in der ich die TJSON-Objekte erzeuge?
Wie kann ich messen, ob ich innerhalb einer procedure ein Speicherleck habe (ich habe bisher nur den Taskmanager beobachtet, wie sich der...
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
26. Jul 2022
Aah, deshalb muss ich auch diese inline generierten Dinge nicht extra freigeben (zb das TJSONBool-Objekt in json.AddPair(prop, TJSONBool.Create(cv='true')); ). Das ist praktisch.
Und wenn ich also Owned=false setze, gebe ich es (wie für mich normal und nachvollziehbar) am Ende erst frei.
Schön, es knallt nicht mehr. :thumb:
Als Folge von Owned=false löst jetzt aber die Wertübergabe...
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
26. Jul 2022
Dankeschön :thumb:
Aber warum schreibt dann die blöde Hilfe so widersprüchliches Zeugs??
Bei TJSONObject.create heißt es, mit .Destroy sei es aufzuräumen. Zudem ist .Free im Hilfe-Index garnicht aufgelistet.
Bei TJSONObject.AddPair hat ein Beispiel, das das JSON-Objekt mit .Free aufräumt.
:wiejetzt:
Wäre ergänzend FreeAndNil sinnvoll?
Und wie kann ich das ahnen, daß das TJSONArray...
-
Forum: Programmieren allgemein
Delphi
by SearchBot,
26. Jul 2022
Ich habe irgendwie eine Wissenslücke oder denke falsch.
Leider hilft auch nicht "RTFM" :wall:
Bisher nahm ich an, daß Objekte, die ich in einer Methode create auch brav wieder freigebe (zB TStringList).
Bei Beispielen mit TJSONObject scheint aber manches anders zu laufen - was mich sehr verwirrt und der Code bei Ausführung entweder knallt oder Windows mein Programm freundlicherweise ohne...