![]() |
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:
Dabei tritt dann der Fehler auf: ...EDOMParseError...'Der Prozess kann nicht auf die Datei zugreifen, da Sie von einem anderen Prozess verwendet wird'
XML.Active := true;
ShowMessage(IntToStr(XML.DocumentElement.ChildNodes.Count)); //Testweise mal die Anzahl ausgeben lassen 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 |
Re: Zugriff auf XML im Projektordner klappt nicht
Was ist jetzt genau?
Anscheinend ist deine Datei noch im Editor oder sonstwie geöffnet. |
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 |
Re: Zugriff auf XML im Projektordner klappt nicht
Zeig mal etwas mehr Code.
|
Re: Zugriff auf XML im Projektordner klappt nicht
Ok,
Delphi-Quellcode:
Naja und sonst nix mehr als das...
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;
Delphi-Quellcode:
...was ich bereits eingangs postete. Die Eigenschaften wie Pfad zur Datei geb ich der Komponente via der Eigenschaftenseite.
procedure TForm1.List_Icons();
begin XML.Active := true; ShowMessage(IntToStr(XML.DocumentElement.ChildNodes.Count)); end; end. 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; |
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:
Besser so:
if cb_Proxy.Checked=True then
Delphi-Quellcode:
if cb_Proxy.Checked then
|
Re: Zugriff auf XML im Projektordner klappt nicht
@DeddyH
Zitat:
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