Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Error bei XML Speicherfreigabe (https://www.delphipraxis.net/170569-error-bei-xml-speicherfreigabe.html)

Leo675 24. Sep 2012 09:27

Error bei XML Speicherfreigabe
 
Hallo allerseits

Ich bin kürzlich von 2006 auf XE2 umgestiegen. Das Programm macht ein XML File und speichert den, nichts wildes! Bei Freigabe des Speichers kommt Error Klasse EInvalid Poiter "Ungültige Zeigeroperation", den Meldung kommt nur mit Debbuger XE2, zum Test habe ich den Free sofort nach dem Create aufgerufen -> gleicher Effekt

Weißt jemand an was die Ursache liegt?

mkinzler 24. Sep 2012 09:41

AW: Error bei XML Speicherfreigabe
 
Zitat:

zum Test habe ich den Free sofort nach dem Create aufgerufen -> gleicher Effekt
Also ein neues Auto, direkt vor der Probefahrt verschrotten lassen. :stupid:

Mal im Detail im Debugger angeschaut?

Leo675 24. Sep 2012 09:48

AW: Error bei XML Speicherfreigabe
 
Ja klar, es knallt genau wenn ich Free aufrufe!

Bernhard Geyer 24. Sep 2012 09:55

AW: Error bei XML Speicherfreigabe
 
Zitat:

Zitat von Leo675 (Beitrag 1184142)
Ja klar, es knallt genau wenn ich Free aufrufe!

Debug-DCUs aktivieren damit du auch in die VCL-Quellcode rein kommst.

Leo675 24. Sep 2012 10:11

AW: Error bei XML Speicherfreigabe
 
der zeigt mir auf system.pas

Code:
procedure TObject.FreeInstance;
begin
  CleanupInstance;
  _FreeMem(Self);
end;

class function TObject.InstanceSize: Longint;
begin
  Result := PInteger(PByte(Self) + vmtInstanceSize)^;
end;

vagtler 24. Sep 2012 10:31

AW: Error bei XML Speicherfreigabe
 
Wäre es nicht hilfreich mal Deinen Code zu posten?

Leo675 24. Sep 2012 10:53

AW: Error bei XML Speicherfreigabe
 
Interface:
IXMLSchicht2_eintrag_listeType = interface(IXMLNodeCollection)

XML-Deklaration
Code:
TDateFromID_FN = class
 
  private
    fXML_DOC : TXMLDocument;
    fXML_S2Eintrag : IXMLSchicht2_eintrag_listeType;

  public
  procedure SaveToFileXML(const aFileName : String ='');

    constructor Create; virtual;
    destructor Destroy; override;
    property XML : IXMLSchicht2_eintrag_listeType read fXML_S2Eintrag write fXML_S2Eintrag;

constructor TDateFromID_FN.Create;
  begin
    try
      slK2     := TStringList.Create;
      slVSK2   := TStringList.Create;
      slKZ2    := TStringList.Create;
      slE23    := TStringList.Create;
      slKInfo2 := TStringList.Create;
      slBInfo2 := TStringList.Create;

      fXML_DOC := TXMLDocument.Create(nil);
      fXML_S2Eintrag := Getschicht2_eintrag_liste(fXML_DOC);
      fXML_DOC.Active:= True;
      fXML_DOC.Version := '1.0';
      fXML_DOC.StandAlone := 'yes';
      fXML_DOC.Encoding := 'UTF-8';
    except
      ....
    end;
  end;

  destructor TDateFromID_FN.Destroy;
  begin  
    ....
    fXML_DOC.Active := False;
    fXML_DOC.free;
  end;
 
procedure TDateFromID_FN.SaveToFileXML(const aFileName: String);
begin
  fXML_DOC.SaveToFile(aFileName);
end;
Funktion Aufruf

Code:
S2Daten:= TDateFromID_FN.Create;
S2Daten.SaveToFileXML('C:\temp\XML\S2_Test'+DateToStr(Now
      )+'.xml');
S2Daten.Free;

mkinzler 24. Sep 2012 10:55

AW: Error bei XML Speicherfreigabe
 
Wann gibst du die ganzen Stringlisten frei?

Leo675 24. Sep 2012 11:07

AW: Error bei XML Speicherfreigabe
 
Im destructor befor ich fXML_DOC auf inactive setze ist als .... bezeichnet beim exept im constructor ist das gleiche

himitsu 24. Sep 2012 12:11

AW: Error bei XML Speicherfreigabe
 
Verwende mal probehalber IXMLDocument statt dem TXMLDocument (also bei deiner Variable)
und laß' das
Delphi-Quellcode:
.Free
weg, bzw. ersetze es durch
Delphi-Quellcode:
:=nil
.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
Seite 1 von 2  1 2      

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