AGB  ·  Datenschutz  ·  Impressum  







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

BoolToStr wirft Memcheck Exception.

Ein Thema von pertzschc · begonnen am 19. Feb 2008 · letzter Beitrag vom 6. Aug 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#11

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 19:36
Zitat von pertzschc:
Daher der Zugriff auf alle public properties des Objektes für das Speichern. Hältst Du das für falsch?
Gruß,
Christoph
Ich benutze immer lokale Variablen und keine globalen Variablen. Es geht da bei um das Freigeben der Klasse. Ich habe das gleiche Problem auch noch in einer meiner Klassen. Ich habe im Interface-Teil eine Variable deklariert. Diese Variable erstelle ich im constructor und gebe Sie wieder im Destructor frei. Da habe ich das gleiche Problem. Ich habe schon die ersten Anfänge gemacht und alles auf die private/protected Variablen umzustellen und meine Memory-Leaks verschwinden wie von Zauberhand.

Funktioniert es denn, wenn Du es abänderst, wie ich es geschrieben habe ?

Edit:
Deine Proberty schreibt und liest doch den Wert fNumberWithZero, warum sollte es nicht funktionieren ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#12

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 19:50
Zitat von RWarnecke:
Deine Proberty schreibt und liest doch den Wert fNumberWithZero, warum sollte es nicht funktionieren ?
Nein, die function ist eine in der Unit deklarierte globale Funktion. Sie bekommt als Argument ein Objekt, welches ein TestProject darstellt. Dieses Objekt hat public properties, an denen jeweils eine Set/Get-Methode hängt.
Diese Eigenschaften des Objektes werden dann in der Save-function als Werte in eine INI-Datei geschrieben. Daher ist kein Zugriff innerhalb der function auf private Eigenschaften des übergebenen Objektes möglich. Dann müsste ich die fAttribute public machen und auf Set/Get-Methoden der Properties verzichten. Das macht für mich keinen Sinn wenn ich hier kapseln möchte. Hilft diese Erklärung zum besseren Verstehen?

Delphi-Quellcode:
type
  TTestProject = class(TObject)
  private
    { Private declarations }
    fName: string; // name des projektes
    fNumberWithZero: boolean; // sollen nach dem prefix der nummernbereich mit nullen aufgefüllt werden?
    ...
    // methoden
    procedure Set_NumberWithZero(aNumberWithZero: boolean);
    function Get_NumberWithZero: boolean;
    ...
  public
    { Public declarations }
    // properties
    property Id: string read Get_IdStr;
    property Name: string read fName write fName;
    property NumberWithZero: boolean read Get_NumberWithZero write Set_NumberWithZero;
    ...
    // konstruktor etc...
    constructor Create; overload;
    destructor Destroy; override;
  end;
Gruß,
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#13

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 20:22
Irgendwie verstehe ich das nicht ganz. Im Beitrag 3 haste noch diese Zeile geschrieben :property NumberWithZero: boolean read fNumberWithZero write fNumberWithZero; Jetzt soll die Zeile so heissen :property NumberWithZero: boolean read Get_NumberWithZero write Set_NumberWithZero; Was ist denn nun richtig ?

Ein Memory Leak ist ja nichts anderes, Du hast Speicher reserviert und gibst diesen nicht wieder frei. Dieses muss ja innerhalb der Ermittlung von der Property NumberWithZero passieren. Zum Beispiel :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  numbers : TStringList;
begin
  numbers := TStringList.Create;
  numbers.Add('Testeintrag 1');
end;
Bei dieser Procedure wird auch ein Memory Leak angezeigt für die Stringliste.


Edit:
Hast Du schonmal mit EurekaLog das ganze untersucht. Eurekalog zeigt Dir den ganzen Weg auf, von da wo es auftritt, bis zum Ursprung.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 20:46
Hast du evtl. Compileroptimierungen an? Darauf reagiert AFAIK MemCheck allergisch.
Ich würde eh FastMM verwenden. Vorteile zu MemCheck:

- Zusätzlich besserer Memory Manager
- Wird noch aktiv weiterentwickelt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#15

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 21:25
Zitat von RWarnecke:
Irgendwie verstehe ich das nicht ganz. Im Beitrag 3 haste noch diese Zeile geschrieben :property NumberWithZero: boolean read fNumberWithZero write fNumberWithZero; Jetzt soll die Zeile so heissen :property NumberWithZero: boolean read Get_NumberWithZero write Set_NumberWithZero; Was ist denn nun richtig ?
Beides ist richtig. Die Set/Get-Methoden sind die Weiterentwicklung, anfangs war es noch ein direkter read/write auf das private Attribut.

Zitat von RWarnecke:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  numbers : TStringList;
begin
  numbers := TStringList.Create;
  numbers.Add('Testeintrag 1');
end;
Bei dieser Procedure wird auch ein Memory Leak angezeigt für die Stringliste.
Das Beispiel passt für mein Problem nicht ganz. Bei mir würde ich jetzt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  test : boolean;
begin
  test := BoolToStr(Sender.IsChild, true);
end;
als Code haben. Dann meckert Memcheck in der Zeile:
  test := BoolToStr(Sender.IsChild, true);
Zitat von RWarnecke:
Hast Du schonmal mit EurekaLog das ganze untersucht. Eurekalog zeigt Dir den ganzen Weg auf, von da wo es auftritt, bis zum Ursprung.
Danke für den Tipp, werde ich mir mal anschauen.
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#16

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 21:27
Zitat von Bernhard Geyer:
Hast du evtl. Compileroptimierungen an? Darauf reagiert AFAIK MemCheck allergisch.
Ich würde eh FastMM verwenden. Vorteile zu MemCheck:

- Zusätzlich besserer Memory Manager
- Wird noch aktiv weiterentwickelt.
Die Optimierungen sind aus, wenn im dpr-File Memcheck eingebunden ist.

Danke für den Tipp mit FastMM. Funktioniert das auch mit Delphi 7 und wo kann ich ein Tutorial dazu finden?

Gruß,
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#17

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 21:34
Zitat von pertzschc:
Das Beispiel passt für mein Problem nicht ganz. Bei mir würde ich jetzt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  test : boolean;
begin
  test := BoolToStr(Sender.IsChild, true);
end;
als Code haben. Dann meckert Memcheck in der Zeile:
  test := BoolToStr(Sender.IsChild, true);
Ich glaube noch nicht ganz, das es an der Funktion BoolToStr liegt. Deshalb würde ich mich da nicht ganz drauf fixieren. Zu Hier im Forum suchenFastMM findest Du hier einige Einträge im Forum.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#18

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 22:52
Zitat von pertzschc:
Danke für den Tipp mit FastMM. Funktioniert das auch mit Delphi 7 und wo kann ich ein Tutorial dazu finden?
Ja, funktioniert viel besser als MemCheck.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:26 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