AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML Datei auslesen: Zugriffsverletzung
Thema durchsuchen
Ansicht
Themen-Optionen

XML Datei auslesen: Zugriffsverletzung

Ein Thema von Strike · begonnen am 28. Apr 2006 · letzter Beitrag vom 29. Apr 2006
Antwort Antwort
Strike

Registriert seit: 25. Apr 2006
5 Beiträge
 
#1

Re: XML Datei auslesen: Zugriffsverletzung

  Alt 29. Apr 2006, 11:31
Vielen Dank Marabu. Es hat geklappt.
Ich hab jedoch noch weitere Fehler in der Anwendung.. Vielleicht kann mir da auch noch jemand helfen:
Es ist wieder eine zugriffsverletzung, diesmal in der Procedure in der ich eine neue Zeile in das TListView schreibe.

Delphi-Quellcode:
//Button Add to XML_List
procedure TForm1.Bt_addClick(Sender: TObject);
var i,j,k,z:integer;
beschreibung:string;
begin
  XML_List.Items.BeginUpdate;

  XML_List.Items.Add;
  i:=XML_List.Items.Count;
  XML_List.Items[i].Caption:=inttostr(i);
  XML_List.Items[i].SubItems.Add(Edit_title.Text);
  XML_List.Items[i].SubItems.Add(Edit_bild.Text);
  z:=Memo_beschreibung.Lines.Count;
  if z>1 then begin
    for j:=1 to z-1 do beschreibung:=beschreibung+Memo_beschreibung.Lines[j];
  end;
  XML_List.Items[i].SubItems.Add(beschreibung);
  XML_List.Items[i].SubItems.Add(Edit_passwort.Text);
  k:=Memo_links.Lines.Count;
  for j:=0 to k-1 do
    XML_List.Items[i].SubItems.Add(Memo_links.Lines[j]);

  XML_List.Items.EndUpdate;
end;
Eine weitere Zugriffsverletzung kommt in dieser Procedure auf, an der markierten Stelle:
[EDIT]Sorry mein Fehler, hab nicht aufgepasst:da hat sich ein kleiner Fehler eingeschlichen, das muss natürlich n-1 sein in der for schleife..Aber die anderen Fehler sind immer noch da..
Delphi-Quellcode:
//Button Extract Links
procedure TForm1.Bt_extractClick(Sender: TObject);
var htmlDoc: IHTMLDocument2;
    allLinks: IHTMLElementCollection;
    Link: IHTMLElement;
    url: String;
    rapidurl:string;
    n,i,j,k:integer;
begin
  htmlDoc:=Browser.Document as IHTMLDocument2;
  allLinks:= htmlDoc.links;
  n:=allLinks.length;
  for i:=0 to n -1 do //DA MUSS NATÜRLICH n-1 HIN
   begin
     Link:=allLinks.item(i,'') as IHTMLElement;
 { TODO : Hier produziert das programm eine zugriffsverletzung }
     url:=Link.toString; //HIER
     j:= Length(url);
     k:=pos('http://www.',url);
     if k<>0 then rapidurl:= Copy (url,k,j) else rapidurl:='0';

     if rapidurl<>'0then begin
       if Memo_links.Lines[i-1]<>rapidurl then Memo_links.Lines.Add(rapidurl);
     end;
   end;
end;


Und das zurückschreiben in das XML File klappt auch noch nicht so ganz..Es kommt zwar kein Fehler, aber es wird nichts geschrieben..

Hier nochmal den dazugehörigen Code:
Delphi-Quellcode:
//Button "Write to Database
procedure TForm1.Bt_savetodbClick(Sender: TObject);
var
zeilen,i,k:integer;
oldNode,newDLS,newDL,newSUB,newLink,newA:IXMLDOMNode;
begin
  CreateOrOpenXML(fAppPath+Box_categ.Text+'.xml');
  zeilen:=XML_List.Items.Count;
  oldNode:=xmlDoc.documentElement.parentNode;
  xmlDoc.removeChild(oldNode);
  xmlDoc.documentElement.removeChild(oldNode);

  for i:=0 to zeilen do
  begin
    newDLS:=xmlDoc.createElement('dls');
    newDL:=xmlDoc.createElement('dl');

    newSub := xmlDoc.createElement('id');
    newSub.text := IntToStr(i);
    newDL.appendChild(newSub);

    newSub := xmlDoc.createElement('title');
    newSub.text := XML_List.Items[i].SubItems[1];
    newDL.appendChild(newSub);

    newSub := xmlDoc.createElement('bild');
    newSub.text := XML_List.Items[i].SubItems[2];
    newDL.appendChild(newSub);

    newSub := xmlDoc.createElement('beschreibung');
    newSub.text := XML_List.Items[i].SubItems[3];
    newDL.appendChild(newSub);

    newSub := xmlDoc.createElement('passwort');
    newSub.text := XML_List.Items[i].SubItems[4];
    newDL.appendChild(newSub);

    newSub := xmlDoc.createElement('download');
    for k:=5 to XML_List.Items[i].SubItems.Count do
    begin
      newLink:=xmlDoc.createElement('links');
      newA:=xmlDoc.createElement('a');
      newA.text:=XML_List.Items[i].SubItems[k];
      newLink.appendChild(newA);
      newSub.appendChild(newLink);
    end;
    newDL.appendChild(newSub);
    newDLS.appendChild(newDL);
  end;
  xmlDoc.documentElement.appendChild(newDLS);
  xmlDoc.save(fAppPath+Box_categ.Text+'.xml');

end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:09 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