COM error 80020009

  • Hi Bitnugger

    vielen Dank für die so schnelle Antwort!! Anhand Deiner Angaben habe ich es tatsächlich so hinbekommen, dass ich schlussendlich einen kompletten html-String erhalte, mit 1 Tabelle pro gefundenem Eintrag. Für Dich als Profi ist es vermutlich Gebastel, würde mich aber trotzdem interessieren, wie Du dieses bewertest. Der Einfachheit halber notiere ich nur die Funktion _Response_XML_To_Array($sResponse) hier unten:

    Roli von Gunten

    << Alles Gute kommt von Gunten >>

  • Mir fiel zwar gerade auf, dass ich $oXML = ObjCreate(xx) zweimal definiert habe... so wirds ein bisschen besser sein

    Edit: Nochmals bearbeitet und nun funktionsfähige Version.

    Nochmals Edit: 1 Fehler hab ich noch nicht lösen können, nach jedem Eintrag sollte im html-code natürlich noch ein "</table>" hinkommen, das ist im Moment noch nicht der Fall

    Roli von Gunten

    << Alles Gute kommt von Gunten >>

    3 Mal editiert, zuletzt von bigeasy76 (1. November 2018 um 18:28)

  • Für Dich als Profi ist es vermutlich Gebastel, würde mich aber trotzdem interessieren, wie Du dieses bewertest.

    Diese Frage ist für mich extrem schwer zu beantworten, weil ich mich gar nicht mehr in die Lage versetzten kann, wie ich an so eine Aufgabe herangegangen wäre, als ich noch Anfänger in Sachen AutoIt war... eine Bewertung von mir reflektiert also bestenfalls, wie gut oder schlecht ich einen Profi bewerten würde... das bist du momentan definitiv noch nicht, wirst es aber ganz sicher werden, wenn du so weiter machst! Nach dem Schema von IMDB bekommst du dafür fette 7/10. Wieso nur 7? Weil du bei deiner Anpassung ein paar Fehler gemacht hast, die du hättest sehen müssen und auch alle Fehler übersehen hast, die in meinen Beispielen stecken, denn sobald sich irgendwas an der API ändert, könnte es dazu führen, dass das Script nicht mehr funktioniert.

    Ich habe schon mit einer erweiterten Version angefangen, die solche Änderungen berücksichtigt... werde evtl. morgen damit fertig.

    Hier noch kurz die mir aufgefallen Fehler in der umgebauten Funktion _Response_XML_To_Array...

    • Der Funktionsname macht keinen Sinn mehr, da die Funktion kein Array mehr als Ergebnis liefert, sondern einen String. ==> _Response_XML_To_HTML
    • Zeile 7, hier macht das Static keinen Sinn... solche Fehler können dich in großen Skripten zum Wahnsinn treiben.
    • Zeile 41 muss vor Zeile 40, also nicht mit in die Schleife, weil wir ja nur eine Tabelle haben wollen.
    • Zeile 57 muss vor Zeile 71, weil wir den schließenden Tag für die Tabelle erst setzen dürfen, wenn alles fertig ist.
    • In $aInf hättest du noch die Strings für tel:extra ... einpflegen können, aber ok, das ist nicht wirklich ein Fehler.

    Hier die korrigierte Version mit angepasstem Namen...

    html_string.png

  • Danke für Dein Vertrauen und vorallem ein sehr grosses Danke für Deine Hilfe, aber ich befürchte, zum Profi werd ich es nicht schaffen. Ich hab mich vor 10-15 Jahren mal intensiver mit Javascript befasst, aber an einem gewissen Punkt kam ich dann einfach nicht weiter, hier ists nun ganz ähnlich: Ich kann mit Hilfe der Doku und Funktionsreferenz die Funktionen anwenden, weiss in etwa, wie Arrays oder Operatoren funktionieren. Aber wie damals, als ich Bücher kaufte und auch mal einen Javascript-Anfängerkurs besuchte (der mir nicht viel brachte, denn der war wirklich auf die blutigsten Anfänger ausgerichtet, was ist eine Variable, was ist ein String, etc), komme ich hier irgendwie nicht "aufs nächste Level", weiss nicht so ganz, wie ich meine Kenntnisse praktisch verbessern kann.

    Ich getrau mich ja fast nicht zu fragen, Du hast hier schon so viel Zeit und Arbeit investiert, aber vielleicht hast Du doch einen kurzen Tipp, wie kann ich solche Herangehensweisen erlernen, wie ich ein Problem am Besten löse und wie ich zb. mehrere Schleifen ineinanderpacke oder wie ich kompliziertere Arrays aufbaue. Durch Praxis?

    Roli von Gunten

    << Alles Gute kommt von Gunten >>

  • Du doch einen kurzen Tipp, wie kann ich solche Herangehensweisen erlernen, wie ich ein Problem am Besten löse und wie ich zb. mehrere Schleifen ineinanderpacke oder wie ich kompliziertere Arrays aufbaue. Durch Praxis?

    Die optimale Herangehensweise ergibt sich automatisch, wenn du genügend Erfahrungen gesammelt hast und du dir nicht mehr bei jeder Funktion noch mal die Hilfe anschauen musst, damit du weiß was da passiert, denn das lenkt enorm von der eigentlichen Aufgabe ab. Erfahrungen bekommt man durch Üben, denn Übung macht den Meister!

    Es gibt kleine Hürden, die man oft nicht mal bemerkt oder nur als lästigen Stolperstein wahrnimmt, aber auch große, die einem alles abverlangen, die man erst nach einem langen, erbitterten und hartem Kampf als gelöst abhaken kann, und auch solche, die einem schier unlösbar erscheinen, dies aber auch nur, weil einem das nötige Rüstzeug dafür noch fehlt.

    Ich würde mal vorsichtig schätzen, dass rund 95 % der Coder an den großen Hürden scheitern, weil sie zu früh aufgegeben haben, denn nur in den seltensten Fällen liegt es daran, weil ihnen die nötige Intelligenz fehlt.

    Mehrere Schleifen ineinander verschachteln... das wie ergibt sich doch automatisch. Jede innere Schleife hat eine spezielle Aufgabe und benötigt die äußere Schleife, um an die Daten zu kommen, die in ihr verarbeitet werden sollen. Sehr hilfreich ist, wenn man die Aufgabenstellung umgangssprachlich formuliert, wodurch die benötigten Schleifen dann quasi von links nach rechts (von außen nach innen) ablesbar sind.

    Komplizierte Arrays... damit meinst du sicher mehrdimensionale Arrays... die sind aber nicht wirklich komplizierter, sondern beinhalten einfach nur mehr Daten. Kompliziert wird es, wenn man sich scheut, diese zu nutzen. Hier findest du ein Array-Tutorial von BugFix : Was ist ein Array?

  • Vielen Dank für die Tipps. Beim obigen, letzten Beispiel von Dir ist mir aufgefallen, dass </table> (wenns mehrere Resultate gibt) erst nach dem letzten Eintrag eingefügt wird, idealerweise sollte dies nach jedem Eintrag eingefügt werden, so dass pro Eintrag eine Tabelle erstellt wird. Das hab ich vorher und auch jetzt durch probieren einfach nicht hinbekommen. Da müsste doch $html_string &= '</table>' einfach nur am richtigen Ort eingefügt werden, oder?

    Roli von Gunten

    << Alles Gute kommt von Gunten >>

  • Ok, du willst also für jeden Eintrag eine Tabelle haben... das ist eigentlich kein Problem... aber... wie du schon gemerkt hast, nicht ganz einfach, weil wir das Auslesen der response.xml momentan noch total falsch angehen.

    Warum falsch? Weil wir davon ausgehen, dass sich die Reihenfolge der Einträge in der response.xml nicht ändert, was aber nicht der Fall ist!!!

    Richtig wäre... umgangssprachlich formuliert:

    ...

    • Besorge mir alle Nodes mit dem NodeNamen "entry"
    • Durchsuche alle ChildNodes in diesen Nodes und wenn wir davon eine ChildNode haben wollen, dann füge sie in die aktuelle Tabelle ein.
    • Hat die entry-Node keinen Eintrag mehr, dann schließe die Tabelle und wenn es noch mehr entry-Nodes gibt, erstelle eine neue Tabelle und durchsuche die nächste entry-Node.
    • Sind alle entry-Nodes durchlaufen, dann schließe die letzte Tabelle und den $html_string mit '</body></html>'.

    Falls ich es noch nicht erwähnt habe... das sind auch meine ersten Gehversuche mit XML und momentan weiß ich noch nicht, wie ich an die ChildNodes der einzelnen entry-Nodes komme!

    Heute habe ich aber schon mehr als genug getan und morgen ist wohlverdienter Ruhetag... du wirst also frühestens Mo. gegen Abend wieder von mir hören. 8o

    2 Mal editiert, zuletzt von Bitnugger (3. November 2018 um 22:31)

  • Schau mal, ob du hiermit was anfangen kannst...

    4 Mal editiert, zuletzt von Bitnugger (6. November 2018 um 21:06) aus folgendem Grund: Nun ist es egal in welcher Reihenfolge die Namen der Tags für die Erstellung der Tabellen stehen, weil sie für die Suche sortiert werden. Error-Handling (COM/XML) hinzugefügt.

  • Das ist wirklich grossartig, vielen Dank, klappt perfekt! Hatte Dir den Key noch per PN gesendet, kam aber offenbar nicht an bei Dir. Aber auf jeden Fall nochmals ein ganz grosses Dankeschön! Werd mir das auch mal genauer ansehen, vieles kapier ich noch nicht.

    Roli von Gunten

    << Alles Gute kommt von Gunten >>