XML Zugriff unter Windows CE

Antworten
Phantomal
Beiträge: 35
Registriert: Di 15. Jul 2008, 18:20

XML Zugriff unter Windows CE

Beitrag von Phantomal »

Hallo zusammen,

ich habe hier wieder eine Nuss an der ich schon eine Weile versuche sie zu knacken.

Die Daten die ich per HTTP Abrufe kommen in einem sauberen XML File an, daß ich dan im Programmpfad abspeichere. Zum erneuten Öffnen des XMLs nutze ich folgenden Befehl:

Code: Alles auswählen

ReadXMLFile(XMLDocument, TempFileName);


Wobei TempFileName ein String ist, der absolut korrekt den Filenamen des XML Files beinhaltet.

Sobald diese Zeile erreicht wird, sagt mir das Gerät ich hätte folgendes Problem:
"BUS Error or missaligned Data Access"


Hat da jemand eine Idee zu? Ich meine im Notfal schreibe ich mir nen Parser, aber da die gesamte Kommunikation mit der API auf XML basiert, wäre das ziemlich aufwändig...


LG

Phanti

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Das ist vermutlich ein Fehler in der XML-Komponente, die Du da verwendest.

Der ARM-Prozessor des PDA kann 32-Bit-Worte nur auf durch 4 teilbaren Speicher-Adressen und 16-Bit Worte nur auf durch 2 teilbaren Speicher-Adressen bearbeiten. (Er kann keine "misaligned"-Zugriffe.) Deshalb muss man bei Typ-Umwandlungen sehr aufpassen. Der PC-Prozessor kann dagegen alle Datentypen an beliebigen Speicheradressen halten.

Beispiel:

Code: Alles auswählen

type 
  tpi = ^integer;
var
  ab: array [b0..15] of byte;
  i: integer;
  pi: tpi;
 
  for i := 0 to 15 do ab[i] := i;
 
  pi := tpi(&ab[3]);
  i := pi^;
end;


Der Befehl i := pi^ wird auf dem ARM (nicht aber auf einem x86) vermutlich die besagte Fehlermeldung erzeugen, weil wahrscheinlich a[0] auf einer durch 4 teilbaren Speicheradresse liegt und a[3] demzufolge nicht.

Macht man keine Typ-Umwandlungen, kann der Compiler normalerweise passenden Code erzeugen, der aber oft _sehr_ viel ineffektiver ist, als bei dem Typ entsprechend abgespeicherten Variablen. (Beim X86 ist der Zugriff ebenfalls deutlich langsamer).

Misaligned Variablen kommen legalerweise z.B. in "packed record"s vor. Eine Möglichkeit, illegale misaligned Zugriffe ohne Typ-Umwandlung, Pointer oder Assembler zu erzeugen, ist deshalb auch ein "absolut" setzen von gepackten Records.

Einzige Lösung: Die XML-Komponente debuggen.

-Michael

Phantomal
Beiträge: 35
Registriert: Di 15. Jul 2008, 18:20

Beitrag von Phantomal »

Hallo Michael,

ich war einige Tage unterwegs und kann daher erst jetzt Antworten. Zunächst einmal vielen Dank für deine detailierte Erklärung. Ich stecke in den Architekturunterschieden noch nicht so wirklich drin und somit war mir der Punkt mit der Datenspeicherung bisher nicht klar.

Was ich nun für ein Problem habe ist, daß ich die XML Komponente nicht debuggen kann. Denn da ich ein Windows Vista Home Premium mein eigen nenne, kann ich keinen Virtual PC und damit auch keinen WinCE Emulator installieren (Es ging hier um das Problem das die Netzwerktreiber nicht downloadbar sind, und daher empfohlen wird den Virtual PC zu installieren.) Leider lässt sich der Virtual PC nur auf Vista Business oder XP Professional Versionen von Windows installieren.

Davon abgesehen weis ich auch nicht, ob meine doch stark eingerosteten Pascal Kenntnisse ausreichen um eine solche Komponente zu "überarbeiten".

Im allergrößten Zweifel parse ich die XMLs die ich zurückerhalte selbst. Es ist zwar nicht der schönste Weg, aber wird sicherlich auch funktionieren. Wobei ich schon gerne Helfen würde die vorhandene Komponente zu verbessern....


LG

Andre

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Der erste Schritt dazu wäre sicherlich der Fehlerbericht
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Phantomal
Beiträge: 35
Registriert: Di 15. Jul 2008, 18:20

Beitrag von Phantomal »

Hallo Christian,

wir reden ja von Windows CE. Alles was ich dort bekomme ist ein Dialog ob ich die Applikation beenden (kill) möchte oder ob ich fortfahren will. Beim beenden ist das Programm zu und bei fortfahren hängt es und ich muss es via "Ausgeführte Programme" beenden.

Einen detailierteren Bericht wirft Windows CE bei mir nicht aus. ich meine vieleicht hat ja jemand einen funktionierenden Link zu den benötigten Netzwerktreibern für den Emulator. Dann würde ich das gerne testen...


LG

Andre

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich meine du sollst einen fehlerbericht machen damit auch die fpc entwickler wissen das es diesen Bug gibt. Vieleicht hast du ja übermorgen schon eine korrigierte version.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

na Christian...willst nicht langsam mal losfahren ;)
Johannes

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Phantomal hat geschrieben:Im allergrößten Zweifel parse ich die XMLs die ich zurückerhalte selbst.


Soweit ich weiß gibt es eine ganze Menge in Pasacl geschriebene XML-Komponenten. Probier 'mal eine andere bevor Du Dich da selbst d'rangibst.

-Michael

Phantomal
Beiträge: 35
Registriert: Di 15. Jul 2008, 18:20

Re: XML Zugriff unter Windows CE

Beitrag von Phantomal »

Hallo zusammen,

ich gebe zu ich habe zu dem Thema nicht viel gefunden, daher habe ich meinen ersten Lazarus Bug Report mit allen mir bekannten Infos erstellt. Ich hoffe ich habe mit dem ersten Report nicht gleich Mist gebaut ;)

Falls es wen interessieren sollte, hier die URL zum Report:
http://bugs.freepascal.org/view.php?id=12079



LG

Phanti

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: XML Zugriff unter Windows CE

Beitrag von Christian »

Nachdem man einen Bugreport macht muss man immer auf Vincent aufpassen. Er hat dich 10 min nachdem du den Report gemacht hast aufgefordert ein Beispiel anzuhängen. Ich gehe davon aus das du das noch nicht gesehn hast. Irgendwie schläft der Mann nie und hat eindeutig viel zu viel Zeit ;) ich finds toll.

Das was ich zu bemängeln hätte du aber unter umständen nicht wisen kannst ist das das ein Freepascal fehler ist da die XML Klassen zur fcl und damit zu freepascal gehören. Wird dann aber unter umständen enfach verschoben also kein grosses Problem.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: XML Zugriff unter Windows CE

Beitrag von Euklid »

Christian hat geschrieben:Nachdem man einen Bugreport macht muss man immer auf Vincent aufpassen. Er hat dich 10 min nachdem du den Report gemacht hast aufgefordert ein Beispiel anzuhängen. Ich gehe davon aus das du das noch nicht gesehn hast. Irgendwie schläft der Mann nie und hat eindeutig viel zu viel Zeit ;) ich finds toll.


ja, der Vincent ist schon ein Phänomen. Neben seiner Arbeit für Lazarus füllt er ja glücklicherweise den Channel des _deutschen_ Lazarusforums selbst in Zeiten, zu denen sonst keiner drin ist. Letztens hat ihn John nach seinen Gründen dazu gefragt. Unter anderem nannte er "to catch christian" ;)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: XML Zugriff unter Windows CE

Beitrag von Christian »

ups, dann sollt ich wohl ma wieder öfter reinschauen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Phantomal
Beiträge: 35
Registriert: Di 15. Jul 2008, 18:20

Re: XML Zugriff unter Windows CE

Beitrag von Phantomal »

Huhuu,

doch hab ich gesehen, aber ich habe den Bug Report hier von der Firma aus geschrieben, da ich heute eine größere Softwareumstellung Koordinativ betreue. Daher kann ich das Beispielprogramm erst später basteln und anhängen.

Achja, das es nen FCL Fehler ist wusste ich wirklich nicht. Ich bin zwar kein programmierneuling, aber in Lazarus letztenendes schon. Aber wenn das verschoben wird, und ansonsten alles ok war dann ists ja gut :)

LG

Ein gestresster Phanti

Phantomal
Beiträge: 35
Registriert: Di 15. Jul 2008, 18:20

Re: XML Zugriff unter Windows CE

Beitrag von Phantomal »

Huhuu,

gestern Abend habe ich noch das Beispielprogramm für den Bugreport gebastelt. Nicht viel, nur ne GUI mit nem Memo, 2 Knöpfen und eben einer Funktion die nen XML öffnet und den Inhalt einer Node ausgibt. Nix spannendes und vor allem der XML code ist nahezu komplett aus dem XML Wiki beitrag kopiert um auszuschließen das ich noch eigene Fehler mit einbaue.

Ich hatte Lazarus in einer neuere Snapshot version installiert, was nun dazu führt das der Fehler zwar noch da ist, nun aber nur noch "Access Violation" ausgibt.

Aber ich denke die Jungs werden den Knackpunkt schon finden. Vor allem da das Tool unter Windows einwandfrei funktioniert.


So, bis in 2 Wochen ;-)


LG

Phanti

Antworten