XML und Sonderzeichen in C++ (immer noch offen!!)



  • Hallo,

    Du mußt einfach ein Objekt vom Typ TIdURI erstellen. Dann kannst du dessen Membermethode nutzen. Etwa so

    TIdURI* uri = new TIdURI;
    AnsiString decode = uri->URLDecode(code);
    // delete uri dann nicht vergessen
    


  • Danke, ich habe jetzt folgendes geschrieben:

    TIdURI* uri = new TIdURI('asd');
    uri->URLDecode("ads");
    

    Doch angeblich müsste ich noch einen weiteren Parameter angeben, erst TMetaClass, dann erst mein String:

    [C++ Error] Unit1.cpp(70): E2034 Cannot convert 'char *' to 'TMetaClass *'
    [C++ Error] Unit1.cpp(70): E2342 Type mismatch in parameter 'vmt' (wanted 'TMetaClass *', got 'char *')

    Doch was ist eine Variabel von TMetaClass oder so?!
    Bzw wie müsste das dann aussehen?



  • Ich brauche immer noch Hilfe



  • Ok, ich hab mir mal die Headerdatei dazu angeschaut. Die Deklaration sieht so aus.

    static AnsiString __fastcall URLDecode(TMetaClass* vmt, AnsiString ASrc);
    

    Wie man sieht, ist die Funktion statisch (benötigt also kein zusätzliches Objekt) und der Konstruktor benötigt zwei Parameter.
    Der Aufruf müsste also so aussehen (ungetestet)

    TIdURI::URLDecode(__classid(TIdURI), "ads");
    


  • Wenn ich den Aufruf

    TIdURI::URLDecode(__classid(TIdURI), "ads");
    

    schreibe, dann treten folgende Fehler auf:

    [Linker Error] Error: Unresolved external 'Iduri::TIdURI::' referenced from ...UNIT1.OBJ
    [Linker Error] Error: Unresolved external '__fastcall Iduri::TIdURI::URLDecode(System::TMetaClass *, System::AnsiString)' referenced from ...UNIT1.OBJ

    Wenn ich dann die Indy10 einbinde, dann treten mehrere Fehler in der Datei HTTPApp.hpp auf, diese Datei nutze ich hingegen nicht bewußt:

    [C++ Error] Httpapp.hpp(94): E2293 ) expected
    [C++ Error] Httpapp.hpp(983): E2189 extern variable cannot be initialized
    [C++ Error] Httpapp.hpp(983): E2449 Size of 'ExtractHeaderFields' is unknown or zero
    [C++ Error] Httpapp.hpp(983): E2188 Expression syntax
    [C++ Error] Httpapp.hpp(983): E2293 ) expected
    [C++ Error] Httpapp.hpp(984): E2189 extern variable cannot be initialized
    [C++ Error] Httpapp.hpp(984): E2449 Size of 'ExtractHTTPFields' is unknown or zero
    [C++ Error] Httpapp.hpp(984): E2188 Expression syntax
    [C++ Error] Httpapp.hpp(984): E2293 ) expected
    [C++ Warning] Unit1.cpp(96): W8004 'NodeList' is assigned a value that is never used
    [C++ Error] Unit1.cpp(183): E2096 Illegal structure operation
    [C++ Error] Unit1.cpp(319): E2096 Illegal structure operation
    [C++ Error] Unit1.cpp(473): E2096 Illegal structure operation
    [C++ Error] Unit1.cpp(584): E2096 Illegal structure operation



  • Die erste Fehlermeldung wird durch eine fehlende lib verursacht.
    Versuche doch mal Indy9 statt 10 zu verwenden. Soweit ich weiß funktioniert Indy10 nicht richtig.
    Ich spreche hier aber nicht aus Erfahrung, da ich die Indy-Bibliotheken noch nie verwendet habe.



  • Wenn ich die Indy9 einbinde treten die ersten beiden Fehler auf!



  • Was kann ich machen, sodass ich diese Funktion benutzen kann oder einfach irgendwas, sodass ich meinen Text decodieren kann?!



  • Hallo

    Zumindestens das hier kompiliert :

    TIdURI* uri = new TIdURI(0);
      AnsiString Text = uri->URLDecode(__classid(TIdURI), "ads");
      delete uri;
    

    bis bald
    akari



  • Danke aber irgendwie tritt jedes mal, wenn ich die Indy10 einbinde die oben gennanten Fehler in der httpapp auf!
    Mit der Indy9 geht es garnicht.
    Kann man irgendwo die httpapp in einer neueren Version downloaden oder was mache ich falsch???
    Als include nehmen ich die IdURI.hpp...



  • Hallo

    TheCaleb schrieb:

    Danke aber irgendwie tritt jedes mal, wenn ich die Indy10
    einbinde die oben gennanten Fehler in der httpapp auf!

    Indy 10 läuft auf dem Builder gar nicht.

    Mit der Indy9 geht es garnicht.

    Das glaube ich dir nicht. Ich habe ein normal installiertes Indy 9 und habe den geposteten Code kompiliert.
    Desweiteren ist "geht nicht" keine Fehlerbeschreibung. Vermutlich hast du Indy 9 nicht richtig installiert bzw. im Projekt nicht richtig eingebunden.

    Kann man irgendwo die httpapp in einer neueren Version downloaden oder was mache ich falsch???

    Du wirst wohl Indy nicht in Einzelteilen bekommen oder zum laufen kriegen.

    Als include nehmen ich die IdURI.hpp...

    Das ist richtig.

    bis bald
    akari



  • Ok, ich nehme nun Indy9(wurde von dem Borland Builder mit installiert), den Code von dir und die besagte Include- Datei.
    Anschließend bekomme ich folgende Fehler:

    [Linker Error] Error: Unresolved external '__fastcall Iduri::TIdURI::TIdURI(const System::AnsiString)' referenced from ...\UNIT1.OBJ
    [Linker Error] Error: Unresolved external 'Iduri::TIdURI::' referenced from ...\UNIT1.OBJ
    [Linker Error] Error: Unresolved external '__fastcall Iduri::TIdURI::URLDecode(System::TMetaClass *, System::AnsiString)' referenced from ...\UNIT1.OBJ



  • Hallo

    Du must in dem Projekt noch die Library-Pfade anpassen, in dem du den Pfad zu Indy einträgst.

    bis bald
    akari



  • Beim BCB2007 ist Indy10 mit dabei. Vielleicht läuft es ja da.



  • Hallo,

    ich habe jetzt unter Linker -> Paths and Defines -> Library search path ;$(BDS)\lib\indy9 angehängt, das müsste ja der Pfad zu Indy sein oder so muss ich sonst noch was eintragen, denn die Fehler treten immer noch auf!
    Was mache ich falsch oder was habe ich vergessen??



  • P.S. ich habe BCB 2006 und da ist Indy9 und 10 dabei.


Anmelden zum Antworten