Standalone Exe und Indy



  • Ich bin der Meinung, dass jedwedes Borland C++ nicht mit Indy 10 ausgeliefert wird, weil Indy 10 inkompatibel mit Borland C++ ist.
    Ich wundere mich, wieso bei dir Indy 10 drauf ist.

    Wie und ob man einem integriertem Indy 10 sagen kann, dass es doch bitte im Hintergrund bleiben soll, und stattdessen die Indy 9 Files benutzen soll, weiß ich nicht.

    Ich würde es folgendermaßen machen:
    Borland C++ deinstallieren, eventuelle Datei und Verzeichnissreste von Hand löschen und es wieder neu (diesmal mit Indy 9) installieren, in der Hoffnung, dass es dann läuft.

    HTH
    R



  • Im BCB2007 wird Indy 10.1.15 mitgeliefert.

    Folgendes im BCB2007 erstellte und standardgemäss als Standalone Exe erzeugte Programm läuft problemlos auf einem nackten Windows XP.

    //---------------------------------------------------------------------------
    
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <IdURI.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
    	TButton *Button1;
    private:	// User declarations
    public:		// User declarations
    	__fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    	TIdURI *iduri = new TIdURI(0);
    	delete iduri;
    }
    //---------------------------------------------------------------------------
    


  • Ups,, dann ziehe ich meine vorherige Aussage zurück, bzw schränke sie auf BCB 2006 ein. 😉



  • Wenn ich das alles so mache, wie du, Jansen, dann klappt das ohne Probleme.
    Schön und gut aber ich brauche ja die Funktion URLEncode und sobald ich die benutze, wie in den Code da unten, dann bekomme ich diese Fehlermeldung:

    Erste Gelegenheit für Exception bei $7C815DEA. Exception-Klasse EIdURIException mit Meldung 'Protocol field is empty'. Prozess Project1.exe (1188)

    Was muss ich jetzt machen?!

    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    	TIdURI *iduri = new TIdURI(0);
    	AnsiString tmp="öäp";
    	tmp=iduri->URLEncode(__classid(TIdURI),tmp);
    	delete iduri;
    }
    




  • Vielen Dank, an die Funktion ParamsEncode() habe ich jetzt nicht mehr gedacht aber ich habe nicht ohne Grund, diesen Beitrag unter dem Gesichtspunkt "Standalone Exe" geöffnet!

    Jetzt, wo ich diese Funktion nutze und die Laufzeitpackages nicht mehr verwende und das Dyn RTL nicht mehr benutze treten folgende Fehler auf:

    [ILINK32 Fehler] Error: Nicht aufl÷sbares externes '__fastcall Iduri::TIdURI::TIdURI(const System::AnsiString)' referenziert von C:\TMP\DEBUG\UNIT1.OBJ
    [ILINK32 Fehler] Error: Nicht aufl÷sbares externes 'Iduri::TIdURI::' referenziert von C:\TMP\DEBUG\UNIT1.OBJ
    [ILINK32 Fehler] Error: Nicht aufl÷sbares externes '__fastcall Iduri::TIdURI::ParamsEncode(System::TMetaClass *, const System::AnsiString)' referenziert von C:\TMP\DEBUG\UNIT1.OBJ

    Ja ich weiß, das hatten wa auch schon!
    Doch wo sollte ich die IndyProtocols.bpi sonst einfügen, ausser bei den Laufzeitpackages, die ich ja nicht verwenden darf, wenn ich ne standalone Exe erstellen möchte?



  • Füge doch mal die IndyProtocols.lib zu deinem Projekt hinzu.



  • Wo genau mache ich das??



  • Hallo,

    Projekt --> Dem Projekt hinzufügen --> Lib auswählen --> Öffnen drücken 🙂

    mfg, Micha!



  • Jetzt kommt dieser Fehler:
    [ILINK32 Fehler] Fatal: Datei IDSYSVCL.OBJ kann nicht ge÷ffnet werden

    Was muss ich nun machen??



  • Ich verweifel hier noch, was fehlt mir denn, damit ich endlich diese exe als standalone machen kann??
    Gibt es dazu keine Dokumentation oder so??


Anmelden zum Antworten