AGB  ·  Datenschutz  ·  Impressum  







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

SetDelimitedText Memory Leak ?

Ein Thema von venice2 · begonnen am 9. Mär 2020 · letzter Beitrag vom 10. Mär 2020
Antwort Antwort
Seite 2 von 3     12 3      
venice2
(Gast)

n/a Beiträge
 
#11

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 14:58
Wenn ich dein Beispiel nehme und selber noch eine Files-Array erstelle (Array of String), bekomme ich keine Memoryleaks. Also muss irgendwas im Beispiel noch fehlen, das wir nicht wissen.

Mein Testcode ohne Memoryleaks. Wenn ich Testeshalber das FreeAndNil rausnehme, habe ich wie erwartet ein Memoryleak.
Delphi-Quellcode:
Im DPR: ReportMemoryLeaksOnShutdown := True;

procedure TForm1.FormCreate(Sender: TObject);
var
  FileName: string;
  SplitPath: TstringList;
  s: Array of String;
begin
  SetLength(s, 2);
  s[0] := 'c:\asfdsdf\sdf';
  s[1] := 'c:\asfds2df\s2df';

  SplitPath := TStringList.Create;
  try
    SplitPath.StrictDelimiter:= true;
    SplitPath.Delimiter := '\';

    SplitPath.DelimitedText := ExtractFilePath(s[0]);

    SplitPath.DelimitedText := ''; // bringt nichts
    SplitPath.Clear; // auch nichts
  finally
    FreeAndNil(SplitPath);
  end;
end;
So hatte ich es ja auch aber ich habe leaks warum auch immer.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#12

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 15:26
Dann poste doch mal deinen kompletten code, dann kann man dir sicherlich besser helfen.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 16:30
Schade, das wäre eine einfache Erklärung gewesen, da globale Variablen in der DPR erst entladen werden, nachdem der Speichermanager aufgeröumt wurde.

Gebe ich einen normalen String ein so wie die @DieDolly habe ich das problem auch nicht.
"normale" String-Konstanten liegen nicht im Speichermanager. (die werden dierect aus dem Code verlinkt, mit ReferenceCounter = -1)


TStringList nutzt intern ein dynamisches Array mit den Strings der Zeilen,
da hätte ein Fehler schon lange auffallen müssen,
und im Setter des DelimitedText sollten die temporären Strings für das Zerlegen eigentlich auch automatisch aufgeräumt werden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Mär 2020 um 16:32 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#14

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 17:19
Ich habe es mit 2 Varianten versucht.
1 mal mit TStringList und einmal von Hand (also eigene Split Funktion)
Bei beiden funktioniert es nicht.
Stehe irgendwie auf dem Schlauch na gut ist halt so.

Seltsam ist nur das ich mit reinen Strings arbeite also keine Konvertierung von PWideChar, WideString oder der gleichen.
Trotzdem
Zitat:
Dann poste doch mal deinen kompletten code, dann kann man dir sicherlich besser helfen.
Den Quelltext hier zu posten bringt nichts da zu viele externe Funktionen aufgerufen werden die hier so niemand nachvollziehen kann.
Am ende gebe ich alles frei wie schon gezeigt aber die Leaks bleiben bestehen.

Geändert von venice2 ( 9. Mär 2020 um 17:22 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 17:38
Hallo,
dann brauche wir ein compilierfähiges Minimalprojekt, also:
- leeres Projekt anlegen
- eine neue Unit (ohne DFM) anlegen
- deinen Code dort rein und in der DPR aufrufen.

Dann alles in eine Zip-Datei und hier hochladen (ohne die Exe).
Heiko
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#16

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 17:42
Hallo,
dann brauche wir ein compilierfähiges Minimalprojekt, also:
- leeres Projekt anlegen
- eine neue Unit (ohne DFM) anlegen
- deinen Code dort rein und in der DPR aufrufen.

Dann alles in eine Zip-Datei und hier hochladen (ohne die Exe).
Danke für das Angebot.
Ich weis das es manchmal nötig ist Quelltexte zur Verfügung zu stellen aber ich sagte schon das bringt nichts ich kann es als Minimal Beispiel nicht auslegen.
Von daher wird mir wohl niemand helfen können muss mich da wohl selber durchbeißen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 18:01
Den Quelltext hier zu posten bringt nichts da zu viele externe Funktionen aufgerufen werden die hier so niemand nachvollziehen kann.
Joar, eine kleine Testanwenndung, mit nur dem Wichtigsten, würde schon reichen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#18

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 22:29
Den Quelltext hier zu posten bringt nichts da zu viele externe Funktionen aufgerufen werden die hier so niemand nachvollziehen kann.
Am ende gebe ich alles frei wie schon gezeigt aber die Leaks bleiben bestehen.
Wenn der bekannte Code keine Fehler produziert, Deiner hingegen schon, woran könnte das dann liegen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 23:07
Hallo,
Zitat:
Am ende gebe ich alles frei.
Das sieht halt Delphi anders...

1.
Wenn es kein schleichender "Programm verbraucht immer mehr Speicher"-Fehler ist
-> ignorieren, Windows räumt ja eh auf

2.
Sollte es Punkt 1 sein, hilft hier nur radikal
- alle Aufrufe totlegen
- Programm starten, testen
- ersten Aufruf reinnehmen, testen

usw.

Das mussten wir bei uns schon öfters machen.
Was dann bei "altem, bewährten, war schon immer so Code" rauskaum, poste ich lieber nicht
Heiko
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#20

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 23:14
Ist denn 100% sicher was da leakt?
Evtl. nämlich mal mit der vollen fastMM4 Version den Leakreport durchführen lassen,
denn der kann einem auch zeigen wo der Speicher allokiert wurde.
Evtl. leakt ja was anderes als gedacht.

Wobei ich mich da schon immer fragte, waru7m bei Delphi nicht diese volle Version
dabei ist, wenn die doch auch OpenSOurce ist...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 13:03 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