Delphi-PRAXiS
Seite 23 von 35   « Erste     13212223 242533     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   himXML (gesprochen himix ML) (https://www.delphipraxis.net/130751-himxml-gesprochen-himix-ml.html)

Codewalker 2. Mai 2010 20:00

Re: himXML (gesprochen himix ML)
 
Ich versuche erfolglos folgende XML-Datei zu laden (nur der relevante Anfang:
XML-Code:
  <?xml version="1.0" ?>
 <ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2009-07-01">
 <OperationRequest>
  <RequestId>147c6ffa-697d-4a9b-86e0-2c9216c2cd60</RequestId>
 <Arguments>
  <Argument Name="Operation" Value="ItemSearch" />
  <Argument Name="Service" Value="AWSECommerceService" />
  <Argument Name="Signature" Value="uXLTuuePbsbl977Rcz+6TNyq3ihx3J52+KN6jt4DlSA=" />
  <Argument Name="ItemPage" Value="1" />
  <Argument Name="AssociateTag" Value="bla" />
  <Argument Name="Version" Value="2009-07-18" />
  <Argument Name="Keywords" Value="Matrix" />
  <Argument Name="AWSAccessKeyId" Value="KEY" />
  <Argument Name="Timestamp" Value="2010-05-02T18:52:50Z" />
  <Argument Name="ResponseGroup" Value="Large" />
  <Argument Name="SearchIndex" Value="DVD" />
  </Arguments>
  <RequestProcessingTime>0.1835730000000000</RequestProcessingTime>
  </OperationRequest>
 <Items>
 <Request>
  <IsValid>True</IsValid>
 <ItemSearchRequest>
  <Condition>New</Condition>
  <DeliveryMethod>Ship</DeliveryMethod>
  <ItemPage>1</ItemPage>
  <Keywords>Matrix</Keywords>
  <MerchantId>Amazon</MerchantId>
  <ResponseGroup>Large</ResponseGroup>
  <ReviewSort>-SubmissionDate</ReviewSort>
  <SearchIndex>DVD</SearchIndex>
  </ItemSearchRequest>
  </Request>
  <TotalResults>130</TotalResults>
  <TotalPages>13</TotalPages>
 <Item>
  <ASIN>B001G5HB2I</ASIN>
  <DetailPageURL>http://www.amazon.de/Matrix-Complete-Trilogy-Keanu-Reeves/dp/B001G5HB2I%3FSubscriptionId%3D1HDS51J6EDYSCKF0YJ82%26tag%3Dtastenhacker-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001G5HB2I</DetailPageURL>
  </Item>
 </Items>
</ItemSearchResponse>
usw.

Mein Code sieht so aus:
Delphi-Quellcode:
procedure Parse(ResponseXML: string);
var
  XML: TXMLFile;
  I: integer;
  Movie: TMovie;
  PicURL: string;
begin
  XML := TXMLFile.Create();
  try
    ClearMovies();
    XML.LoadFromXML(ResponseXML);
    with XML.Node['ItemSearchResponse'].Node['Items'] do
    begin
      Self.TotalResults := Node['TotalResults'].Text;
      Self.TotalPages := Node['TotalPages'].Text;
      for I := 0 to Nodes.Count - 1 do
      begin
        if Nodes[i].Name = 'Item' then
        begin
         // Mach was mit Item
        end;
      end;
    end;
  finally
    XML.Free;
  end;
end;
Ich bekomme aber für TotalResults und TotalPages immer eine 0. Wo liegt mein Problem?

himitsu 2. Mai 2010 20:22

Re: himXML (gesprochen himix ML)
 
XML.Node['...'] entspricht with XML.RootNode.Node['...'] do

versucht mal statt
Delphi-Quellcode:
with XML.Node['ItemSearchResponse'].Node['Items'] do
einfach nur
Delphi-Quellcode:
with XML.Node['Items'] do

PS: Zum Test kannst du auch mal das standardmäßig gesetzte xoNodeAutoCreate aus den Options entfernen, dann sollte es eine Exception geben, weil ja auf einen nicht existierenden Node zugegriffen wird.

geskill 10. Mai 2010 15:29

Re: himXML (gesprochen himix ML)
 
hey himitsu, bin nun nach langem hin und her (vor allem wegen Threadsicherheit) von der MSXML auf deine Klasse umgestiegen.

Da ist mir doch gleich ein Fehler aufgefallen (v0.99d Beta 12.01.2010). Wenn ich den Wert einen Checkbox oder allgemeiner einen Boolean-Wert abspeichere, erwarte ich, dass True/False geschrieben wird. Deine Klasse schreibt bei Wahr jedoch $FFFF. Hab den Fehler mittels BoolToStr erstmal umgehen können.

Ansonsten Top Arbeit :thumb:

Beispiel:
Delphi-Quellcode:
<TXMLFile>.Nodes['xml'].Nodes['testwert'].Text := True;

himitsu 10. Mai 2010 19:00

Re: himXML (gesprochen himix ML)
 
Threadsicher ist meine Klasse aber auch nicht ... jedenfalls sollte man nicht von mehreren Threads aus den selben Node, bzw. die selbe NodeListe bearbeiten/ändern.
(diesbezüglich wird sich aber in der nächsten Version sehr viel ändern, vorallem da ich jetzt endlich eine gute Möglichkeit für die Nutzung von Interfaces gefunden hab ... hatte ja enorme Probleme mit Kreuzreferenzen und dudurch selbsthaltenden Datenstrukturen :? )

In der nächsten Version und wenn ich meine RexEx-Klasse (ePCRE) fertig hab, wird es wohl auch endlich XPath geben.



Hhhhh, das nut den Boolean muß ich wohl nochmal nachsehn, der Grund hiefrür ist erstmal, daß in einem Variant nicht das 1-Byte-kleine Boolean, sondern das 2-Byte WordBool Verwendung findet.
Boolean: True = 1
WordBool: True = -1 aka $FFFF

Aber eigentlich dachte ich, ich hätte dieses entsprechend beachtet. :shock:
Intern ist jedenfalls eine eigene Version von BoolToStr verbaut.
Denn der Hauptgrund für den Nummerischen Wert ist, daß ich keine SubWerte vernichten wollte
und es somit auch einen nummerischen Modus gibt, neben den TRUE- und FALSE-Ausdrücken für -1 und 0.
> Ein Boolean, ByteBool, WordBool oder LongBool kennt nunmal nicht nur True und False, sondern noch viel mehr.
PS: Das ist auch der Grund, warum man bei Abfragen nicht mit =True vergleichen darf. :zwinker:
Aber wir gesagt, eigentlich sollte bei diesem $FFFF in der Datei TRUE drinstehn ... ich werd' es mir also nochmal ansehn.

BlueStarHH 18. Jun 2010 07:56

AW: himXML (gesprochen himix ML)
 
Hallo himitsu,

erstmal vielen Dank für Deine erstklassige Arbeit! Mir gefällt die himXML sehr gut!

Zu meiner Frage: Ich möchte GUI-Komponenten als XML speichern und wieder laden. Also aus der XML wieder eine GUI erstellen. Das wollte ich mit TXMLNode.Serialize() machen, doch dann kommt einen Exception, die sagt dass es noch nicht implementiert ist. Schaut man in den Quellcode ist dort jedoch schon Code zu finden. Der ist jedoch noch nicht fertig und funktioniert noch nicht richtig? Oder wie soll man das verstehen? Was fehlt denn noch? Wie aufwändig wird es, das fehlende noch zu implementieren? Gibt es zeitliche Planungen für die Fertigstellung?

PS: Welche von den beiden Archiven (himxml_246.7z, himxml_164.7z) ist die aktuelle Version? Man könnte meinen das wäre die himxml_246 weil 246 für 2.46 steht. Schaut man aber in die Archive rein, sind die neueren Dateien in 164 zu finden. Nach welchem Muster vergibst Du da die Versionsnummern?

Gruß
BlueStar

himitsu 18. Jun 2010 09:34

AW: himXML (gesprochen himix ML)
 
Ja, mit diesem (De)Serialize gibt/gab es noch einige Problemchen :cry:

Diese Nummern in den Anhängen haben nichts zu sagen.
Dieses stammen von der internen Verwaltung des alten Forums.
- beide Dateien hießen himXML.7z und die Version war in den nun ebenfalls fehlenden Kommentaren aufgeführt.
Das Aktuellere ist aber zufälliger Weise das mit der größeren Zahl (glaub ich).

Was die Fertigstellung angeht:
Bin grad/immernoch an einem anderem Projekt dran, welcher in der nächste himXML-Version verwendet werden soll.

Eigentlich dachte ich irgendwo im Forum würde eine halbwegs funktioniere ältere Version der Objektserialisierung rumliegen, wenn ich nur wüßte wo ... hatte dazu mal 'nen Thread aufgemacht, wegen einiger Fragen zur Umsetzung.

Neutral General 29. Jun 2010 17:39

AW: himXML (gesprochen himix ML)
 
Hallo,

Hab deine Unit jetzt mal ausprobiert :mrgreen:

Macht allerdings ein paar Probleme mit D2010:
Delphi-Quellcode:
Procedure TXMLNode.Serialize(C: TObject; SOptions: TXMLSerializeOptions = []; Proc: xXMLSerializeProc = nil);
      Procedure _SavePropInfos(Node: xXMLNode; Info: PPropInfo);
        Const cTypeKind: Array[TTypeKind] of AnsiString = ('Unknown', 'Integer', 'Char',
            'Enumeration', 'Float', 'String', 'Set', 'Class', 'Method', 'WChar',
            'LString', 'WString', 'Variant', 'Array', 'Record', 'Interface', 'Int64',
            'DynArray' , {$IF Declared(UnicodeString)} 'UString' {$IFEND});
Zitat:

[DCC Fehler] HimXML.pas(6767): E2072 Anzahl der Elemente (19) weicht von der Deklaration (22) ab
Das ist ca. Zeile 6765 in der HimXML.pas. Problem scheint nur zu sein, dass TTypeKind unter D2010 ein paar weitere Einträge hinzubekommen hat. Ansonsten bekomme ich noch:

Zitat:

[DCC Hinweis] HimXML.pas(774): H2219 Das private-Symbol 'DoChanged' wurde deklariert, aber nie verwendet
Zitat:

[DCC Hinweis] HimXML.pas(1210): H2219 Das private-Symbol 'SetOwner' wurde deklariert, aber nie verwendet
Nichts tragisches, aber wollte dich darauf hinweisen, falls das nicht beabsichtigt sein sollte ;)

himitsu 29. Jun 2010 18:40

AW: himXML (gesprochen himix ML)
 
hast du die mit der größeren Nummer (sind nur indexnummern des alten phpBBs) verwendet?
(eigentlich dachte ich ich hätte eine Version Oben, welche schon mit D2010 zurecht kommt)

der gezeigte Codeausschnitt gehört jedenfalls zur älternen Version. :gruebel:




Nja, ich bastel jetzt erstmal vorwiegend die Webseite, dann kommt da die Hilfe für's RegEx (ePCRE), die himXML und Anderes hin
und danach wird's RegEx für's XPath ins himXML eingebaut und das himXML wieder auf selbstverwaltete (Refferenzzählung) Interfaces umgestellt.
Wird irgendwie langsam zuviel, um noch alles zu überblicken, da Vieles zusammenhängt.

Neutral General 29. Jun 2010 18:46

AW: himXML (gesprochen himix ML)
 
Habe diese Version hier: himxml_246.7z
Wenn das die ältere Version sein sollte, dann ist die Benennung ziemlich irritierend :?

himitsu 29. Jun 2010 19:13

AW: himXML (gesprochen himix ML)
 
Nja, original hießen beide mal himXML.7z und die Versionen standen in den nun nicht mehr existierenden Dateikommentaren.

hab nochmal reingesehn ... es ist doch andersrum :shock:
(wie gesagt, die Dateinamen sind nicht von mir, daran isses neue Forum Schuld)

himxml_246 = v0.9 21.05.2009
himxml_164 = v0.99d 12.01.2010


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 Uhr.
Seite 23 von 35   « Erste     13212223 242533     Letzte » 

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