Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Zugriff auf XML im Projektordner klappt nicht (https://www.delphipraxis.net/129951-zugriff-auf-xml-im-projektordner-klappt-nicht.html)

stev-e87 28. Feb 2009 10:24


Zugriff auf XML im Projektordner klappt nicht
 
Hallo werte Delphi Gemeinde,

habe ein Problem beim Zugriff auf eine XML- Datei. Ich benutze die Standard- Komponente TXMLDocument, gebe Ihr die Datei 'ico.xml' vor (liegt im Projektordner) und weise zur Laufzeit folgendes zu:

Delphi-Quellcode:
  XML.Active := true;
  ShowMessage(IntToStr(XML.DocumentElement.ChildNodes.Count)); //Testweise mal die Anzahl ausgeben lassen
Dabei tritt dann der Fehler auf: ...EDOMParseError...'Der Prozess kann nicht auf die Datei zugreifen, da Sie von einem anderen Prozess verwendet wird'

Ist eigentlich nicht unverständlich formuliert, nur find ich die Ursache für den Prozessübergriff nicht. Hab das hier in XML gepostet, da ein Zugriff auf Textdateien im Projektordner kein Prob ist und auch der XML Zugriff klappt, solange die Datei außerhalb liegt.


Hat jemand ne Ahnung???

MFG

sirius 28. Feb 2009 13:37

Re: Zugriff auf XML im Projektordner klappt nicht
 
Was ist jetzt genau?

Anscheinend ist deine Datei noch im Editor oder sonstwie geöffnet.

stev-e87 1. Mär 2009 10:39

Re: Zugriff auf XML im Projektordner klappt nicht
 
Hallo,

das ist ja grad das Prob! Hab es eben nicht noch mal geöffnet. Wenn ich die Datei in ein anderes Verzeichnis lege klappts dann wieder. Nehme ich im Umkehrschluss noch ne andere XML aus dem Ordner mit den Projektdateien gehts wieder nicht.

Greift die IDE automatisch auf Dateien im Verzeichnis zu oder so?

thx

Luckie 1. Mär 2009 11:02

Re: Zugriff auf XML im Projektordner klappt nicht
 
Zeig mal etwas mehr Code.

stev-e87 1. Mär 2009 11:42

Re: Zugriff auf XML im Projektordner klappt nicht
 
Ok,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lStream: TFileStream;
begin
 if cb_Proxy.Checked=True then
  begin
    HTTP_File.ProxyParams.ProxyServer:=txt_Proxy_IP.Text;
    HTTP_FIle.ProxyParams.ProxyPort:=Strtoint(txt_Port.Text);
  end;
 lStream:=TFileStream.Create('Data\ico.xml', fmCreate or fmShareDenyWrite);
  try
    try
    //Während der Tests wird die Zeile nicht benötigt, da die XML bereits auf der Platte ist.
    //HTTP_File.Get('http://www.t-knows.de/programs/iconcatcher/ico.xml',lStream);
    List_Icons;
    except
    On E : EDomParseError do
      begin
         MessageDlg('Es ist ein Fehler bei der Arbeit mit der Icondatenbank aufgetreten!',mtConfirmation,
          [mbOk], 0, mbOk);
            Exit;
      end;

    end;
  finally
    lStream.Free;
  end;
end;
Naja und sonst nix mehr als das...
Delphi-Quellcode:
procedure TForm1.List_Icons();
begin
  XML.Active := true;
  ShowMessage(IntToStr(XML.DocumentElement.ChildNodes.Count));
end;
end.
...was ich bereits eingangs postete. Die Eigenschaften wie Pfad zur Datei geb ich der Komponente via der Eigenschaftenseite.
Hmmm


Ahhhh!!!!!
Da fällts einem wie Schuppen von den Augen. Oje is ja peinlich... Ok der Selbstdemütigung wegen geb ich mal für die, denen es genauso spät auffällt wie mir die Lösung:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lStream: TFileStream;
begin
 if cb_Proxy.Checked=True then
  begin
    HTTP_File.ProxyParams.ProxyServer:=txt_Proxy_IP.Text;
    HTTP_FIle.ProxyParams.ProxyPort:=Strtoint(txt_Port.Text);
  end;
 lStream:=TFileStream.Create('ico.xml', fmCreate or fmShareDenyWrite);
  try
    try
    HTTP_File.Get('http://www.t-knows.de/programs/iconcatcher/ico.xml',lStream);
    except
    On E : EDomParseError do
      begin
         MessageDlg('Es ist ein Fehler bei der Arbeit mit der Icondatenbank aufgetreten!',mtConfirmation,
          [mbOk], 0, mbOk);
            Exit;
      end;

    end;
  finally
    lStream.Free;
    List_Icons; //Muss natürlich hinter die Freigabe des Streams... *Schäm*
  end;

DeddyH 1. Mär 2009 11:45

Re: Zugriff auf XML im Projektordner klappt nicht
 
2 Dinge fallen mir auf. Erstens solltest Du immer absolute Pfade verwenden, da Du sonst nicht mit Bestimmtheit weißt, wo die Daten eigentlich landen. Und zweitens solltest Du niemals auf true abfragen.
Delphi-Quellcode:
if cb_Proxy.Checked=True then
Besser so:
Delphi-Quellcode:
if cb_Proxy.Checked then

stev-e87 1. Mär 2009 12:12

Re: Zugriff auf XML im Projektordner klappt nicht
 
@DeddyH
Zitat:

if cb_Proxy.Checked then
Danke, wusste nicht, dass das auch so einfach geht.

Was das eigentliche Problem betraf, siehe mein letzter Beitrag im editierten Teil...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz