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 1 von 2  1 2      
pertzschc

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

BoolToStr wirft Memcheck Exception.

  Alt 19. Feb 2008, 15:04
Hallo zusammen,

ich habe ein Projekt, welches ich gerade mit Memcheck auf Leaks überprüfe. Dabei meckert Memcheck folgende Codezeile an:

Delphi-Quellcode:
unit uProject.pas
// schreibe daten des projektes
...
319: ini.WriteString(cIniSectionProject, project_usernumberwithzero, BoolToStr(aTestProject.NumberWithZero, true));
...
Auszug aus dem Memcheck.log:

Size: 14
2 Occurences
call stack - 0 : (no debug info) Find error: 0000000E
call stack - 1 : Module sysutils.pas Routine @Sysutils@BoolToStr Line 4720 Find error: 0040A576
call stack - 2 : Module uProject.pas Routine @Uproject@SaveProjectDataToFile Line 319 Find error: 0054C3F0

Was läuft hier in @Sysutils@BoolToStr für Memcheck falsch ab?

Gruß,
Christoph
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: BoolToStr wirft Memcheck Exception.

  Alt 19. Feb 2008, 15:10
Was steht in aTestProject.NumberWithZero?
Markus Kinzler
  Mit Zitat antworten Zitat
pertzschc

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

Re: BoolToStr wirft Memcheck Exception.

  Alt 19. Feb 2008, 15:16
Zitat von mkinzler:
Was steht in aTestProject.NumberWithZero?
Das ist eine public Property vom Typ boolean:

Delphi-Quellcode:
fNumberWithZero: boolean; // sollen nach dem prefix der nummernbereich mit nullen aufgefüllt werden?
...
property NumberWithZero: boolean read fNumberWithZero write fNumberWithZero;
...
constructor TTestProject.Create;
begin
  // rufe vater auf
  inherited Create;
  // eigene daten inits
  fNumberWithZero:=true;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: BoolToStr wirft Memcheck Exception.

  Alt 19. Feb 2008, 15:17
Zitat:
Das ist eine public Property
Das dürfte das Problem sein.
Markus Kinzler
  Mit Zitat antworten Zitat
pertzschc

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

Re: BoolToStr wirft Memcheck Exception.

  Alt 19. Feb 2008, 15:25
Zitat von mkinzler:
Zitat:
Das ist eine public Property
Das dürfte das Problem sein.
Kannst Du es mir bitte näher erklären? Die Property ist vom typ boolean, was passiert da in BoolToStr() anderes als sonst?
Vielen Dank,
Christoph
  Mit Zitat antworten Zitat
pertzschc

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

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 18:05
Hat keiner mehr eine Idee, was an der Property nun so falsch ist? (*Push*)

Gruß,
Chritoph
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 18:12
Hi,

Also an den Properties kann es eigentlich nicht liegen, denn das hier funktioniert:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    FVS: Boolean;
    { Private declarations }
  public
    property Test: Boolean read FVS write FVS;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Test := false;
  Caption := BoolToStr(Test,true);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Test := true;
end;
Schau lieber mal dort nach:

Zitat:
call stack - 2 : Module uProject.pas Routine @Uproject@SaveProjectDataToFile Line 319 Find error: 0054C3F0
Ich würde glatt behaupten, dass du dich da irgendwie verwurschtelt hast (vlt. auch mit Pointern) und es dann erst anschließend kracht (anschließend ist zufälligerweise BoolToStr).

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
pertzschc

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

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 18:17
Zitat von Neutral General:
Schau lieber mal dort nach:

Zitat:
call stack - 2 : Module uProject.pas Routine @Uproject@SaveProjectDataToFile Line 319 Find error: 0054C3F0
Ich würde glatt behaupten, dass du dich da irgendwie verwurschtelt hast (vlt. auch mit Pointern) und es dann erst anschließend kracht (anschließend ist zufälligerweise BoolToStr).
Schau mal in meinen 1. Beitrag, da ist die Zeile 319 enthalten. Es kracht auch nicht in der Programmausführung, sondern Memcheck meldet ein Speicherleck im Zusammenhang mit BoolToStr() - Aufruf.

Hast Du noch eine Idee?

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

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

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 18:18
Mal eine Frage, warum der Umweg über die Public-Property ? Ich würde statt
BoolToStr(aTestProject.NumberWithZero, true) dieses hier schreiben BoolToStr(fNumberWithZero, true)
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
pertzschc

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

Re: BoolToStr wirft Memcheck Exception.

  Alt 6. Aug 2008, 18:23
Zitat von RWarnecke:
Mal eine Frage, warum der Umweg über die Public-Property ? Ich würde statt
BoolToStr(aTestProject.NumberWithZero, true) dieses hier schreiben BoolToStr(fNumberWithZero, true)
Ganz einfach, der Pointer auf das Projekt wird in die statische function() mit reingegeben.
function SaveProjectDataToFile(aTestProject: TTestProject): boolean; Daher der Zugriff auf alle public properties des Objektes für das Speichern. Hältst Du das für falsch?
Gruß,
Christoph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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