AGB  ·  Datenschutz  ·  Impressum  







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

FastIniFiles Memory Leaks

Ein Thema von API · begonnen am 22. Nov 2009 · letzter Beitrag vom 19. Feb 2010
Antwort Antwort
Seite 3 von 4     123 4      
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#21

Re: FastIniFiles Memory Leaks

  Alt 22. Nov 2009, 14:10
Zitat von hoika:
Einspruch.
Lese ich mir die Hilfe zu Finalize durch,
macht sie genau so, was sie soll.
Aber ein
Entries.Dispose;
geht hier doch auch ?

Noch mal die Frage an den TE,
hast du Free durch Destroy ersetzt ?
1. Finalize(Array) fässt keine Zeiger an, die in dem Array abgelegt sind. Das steht so im Quellcode. Finalize hier aufzurufen, ist auch überflüssig, weil das Delphi macht. Wenn man nicht mit Referenzzählern rumspielt, muss man nie Finalize selbst aufrufen.

2. 'Entries.Dispose' geht nicht, weil 'Entries' kein Zeiger ist (nun, eigentlich schon, aber nicht offiziell)

3. Free ist nur sicherer als destroy, macht aber nicht mehr. Also würde es ein Speicherleck nicht vermeiden.

Wenn in dem dynamischen Array wirklich Klassen abgelegt sind, dann muss man die einzelnen Elemente auch extra freigeben. Oder man verwendet eine TObjectList.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#22

Re: FastIniFiles Memory Leaks

  Alt 22. Nov 2009, 14:19
Mein Fazit zu dieser Klasse:

Solange wie der Ersteller diese nicht grundlegend überholt, ist sie absolut nicht empfehlenswert.

- das Chaos in den Destruktoren (Free ist kein Destructor)
- die Speicherlecks (fast keines der erstellen Objekte wird jemals freigegeben
- ab Delphi 2009 funktioniert keiner seiner ASM-Codes mehr,
da alles auf String/PChar/Char ausgelegt ist, was ab da ja wohl Unicode sein wird
und die ASM-Codes nur auf ANSI laufen. (wenn er wenigstens AnsiString/PAnsiChar und AnsiChar genommen hätte)

[add]
Die Entwicklerecke ist witzig ... warum bin ich da eigentlich in einem C#-Forum angemeldet ... bin doch nur ins Delphi-Foum eingetreten
http://www.c-sharp-forum.de/viewtopi...=585351#585351
http://www.delphi-forum.de/viewtopic...r=asc&start=60

nja, eigentlich wollte ich via Google nur einen "Kontakt" zum Ersteller suchen, da seine Webseite (siehe Link in der Unit) nicht mehr existiert und da bin ich doch tatsächlich auf C# gestoßen
$2B or not $2B
  Mit Zitat antworten Zitat
TDS

Registriert seit: 28. Feb 2007
Ort: Vetschau
5 Beiträge
 
#23

Re: FastIniFiles Memory Leaks

  Alt 22. Nov 2009, 18:51
Huhu,

ich bin ja derjenige der aktuell die Unit hostet. Ich habe die Lecks schon früher bemerkt, jedoch war mir das für ein kleines Programm egal.
Man benötigt solch eine Unit wenn in der Ini-Datei entweder Leerzeichen in den Sektionen sind bzw. es doppelte Sektionen gibt. Da steigt das normale TIniFile und seine Abkömmlinge aus.

Wenn mir jemand erklärt wie ich die ASM-Blöcke rausbekomme und sie fit für UTF in Delphi 2009 mache, dann schreibe ich gern eine neue Version

Gruß TDS
Delphi 7 Enterprise
Surfbar für www.start42.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#24

Re: FastIniFiles Memory Leaks

  Alt 22. Nov 2009, 19:05
Wieso sollte man doppelte Sektionen in einer INI haben wollen?

Und wegen der ASM-Codes:
- man könnte diese für Unicode umbauen (1-Byte auf 2-Byte), aber dann laufen sie nicht mehr mit Ansi
oder man hat alles Doppelt und direkt die einzelnen Befehle entsprechend über Compilerschalter umschalten wäre noch unübersichtlicher, da es zuviele Stellen sind
- oder ... nja, ich hab einfach die ASM-Codes entfernt
> z.B. BinaryToHex durch Delphis BinToHex ersetzt und die restlichen Codes durch 'ne Pascal-Version
(ich hoffe mal diese Versionen laufen auch)

Ergebnis siehe anderer Thread (im DF)
$2B or not $2B
  Mit Zitat antworten Zitat
TDS

Registriert seit: 28. Feb 2007
Ort: Vetschau
5 Beiträge
 
#25

Re: FastIniFiles Memory Leaks

  Alt 22. Nov 2009, 19:28
Zitat von himitsu:
Wieso sollte man doppelte Sektionen in einer INI haben wollen?

Und wegen der ASM-Codes:
- man könnte diese für Unicode umbauen (1-Byte auf 2-Byte), aber dann laufen sie nicht mehr mit Ansi
oder man hat alles Doppelt und direkt die einzelnen Befehle entsprechend über Compilerschalter umschalten wäre noch unübersichtlicher, da es zuviele Stellen sind
- oder ... nja, ich hab einfach die ASM-Codes entfernt
> z.B. BinaryToHex durch Delphis BinToHex ersetzt und die restlichen Codes durch 'ne Pascal-Version
(ich hoffe mal diese Versionen laufen auch)

Ergebnis siehe anderer Thread (im DF)
Doppelte Sektionen sind z.B. bei Symantec in einer UPI-Datei. Solch eine UPI ist eine Ini-Datei für eine Deployment-Software. Also solange solch große Herstelle eigene Süppchen kochen muss man auf solche Units zurückgreifen.
Wenn deine Version laufen sollten, kannst du sie ja hier posten Ich mache dann eine Delphi 7 und 2009 Version

Btw, welcher andere Thread genau (zu faul zum suchen...)?
Delphi 7 Enterprise
Surfbar für www.start42.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#26

Re: FastIniFiles Memory Leaks

  Alt 22. Nov 2009, 19:40
Zitat von TDS:
Btw, welcher andere Thread genau (zu faul zum suchen...)?
1 bzw. 3 Posts zuvor (Post #22)
http://www.delphi-forum.de/viewtopic...=585351#585351

[edit]
Style-Guide-Anpassungen übernommen (siehe #29)
Miniaturansicht angehängter Grafiken
screeny_165.png  
Angehängte Dateien
Dateityp: zip fastinifiles_v3.3a_522.zip (31,8 KB, 24x aufgerufen)
$2B or not $2B
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#27

Re: FastIniFiles Memory Leaks

  Alt 23. Nov 2009, 07:54
Ausgezeichnet - die Leaks sind verschwunden! Danke himitsu

Noch eine Frage: Entspricht das {$IF SizeOf(Char) > 1} dem {$IFDEF UNICODE} ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#28

Re: FastIniFiles Memory Leaks

  Alt 23. Nov 2009, 08:40
Im Prinzip ja (hab's geändet), nur das dieses typsicherer ist und man es leicht auf's zukünftige Unicode4 erweitern kann.

Scheib mal ein {$define unciode} in die Datei oder ein "unicode" in die Bedingungen (siehe Projektoptionen) ... schon schaltet {$ifdef unicode} auf Unicode, aber die Typen sind dennoch in Ansi (<D09).
$2B or not $2B
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#29

Re: FastIniFiles Memory Leaks

  Alt 23. Nov 2009, 09:19
Den Code habe ich noch etwas formatiert ("Style-Guide Konform")

u.a.:
true --> True
false --> False
break --> Break

Zudem noch die Versionsnummer in FastIniFiles.pas aktualisiert. Sonst wurde nichts geändert.
Angehängte Dateien
Dateityp: zip fastinifiles_v3.3_931.zip (24,7 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#30

Re: FastIniFiles Memory Leaks

  Alt 23. Nov 2009, 10:49
komisch, ich dachte die Version hätte ich geändert

OK, hab deine Änderung mit in meinen Anhängen mit einfließen lassen.
(da ich nicht alles umformatieren wollte, hatte ich versucht den "originalen" Style beizubehalten ... war nicht unbedingt einfach)

[edit]
In der ZIP wurde nun auch die Dokumentation.html um die isUnicode-Eigenschaft erweitert.
$2B or not $2B
  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 21:59 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