Parameterübergabe (ParamStr())



  • Hi, möchte an mein Programm einen Parameter übergeben.
    Der Parameter wird angehängt wenn ich eine datei öffne,
    mit der das Programm gestartet wird.

    also z.b. : test.ewc wird geöffnet.
    Der Parameter ist dann z.b.: C:\test.ewc

    Das klappt auch alles super.
    Nur wenn die Datei auf C:\Dokumente und Einstellungen\Administrator\Desktop\test.ewc
    liegt, dass speichert ParamStr(1) irgendwie nur C:\Dokumente

    Das kann doch nicht sein das des bei Leerzeichen nicht geht..

    Hier ein Programmausschnitt:

    char settingfile[MAX_PATH];
    char buffer[MAX_PATH];
    
    GetModuleFileName(NULL, (LPSTR)settingfile, MAX_PATH);
    strcpy(strrchr((char *)settingfile, '\\')+1, "settings.ini");
    int id = GetPrivateProfileInt("FileRegistration","ID",1,settingfile);
    
    if(id == 0)
    {
            if(!CreateFileAssociation("ewc","eWallet Cryptware Datei","","",0,true))
                    ShowMessage("Dateityp konnte nicht registriert werden !");
                    WritePrivateProfileString("FileRegistration","ID","1",settingfile);
    }
    
    if(ParamCount() == 1)
    {
            datei_normal->Lines->LoadFromFile(ParamStr(1));
            sprintf(buffer,"%s - eWallet Crypware v1.0",ExtractFileName(ParamStr(1)));
            Main->Caption=buffer;
    }
    else
    {
    
            sprintf(buffer,"Unbenannt - eWallet Crypware v1.0");
            Main->Caption=buffer;
    }
    

    BITTE UM HILFE 🙂



  • Das ist NORMAL ( bei Windoof)!!!

    Parameter, die Leerzeichen enthalten muessen in "" eingeschlossen uebergeben werden, sonst wird an den Stellen in mehrere Parameter getrennt!



  • Der übergebene Pfad muss in Anführungszeichen eingeschlossen sein.
    Genauso wie z.B. der Ziel-Eintrag bei Verknüpfungen auf dem Windows-Desktop.



  • und wie kann ich das machen?

    Ich kann doch schlecht den Parameter ändern...



  • Hey Klasse, ich habs geschafft,
    hätte ich auch selbst drauf kommen können...

    Danke vielmals...

    Hab um das Parameterzeichen in der Regitry einfach " gemacht.

    Crox



  • Das liegt in der Verantwortung des Anwenders. Wenn er den Pfad "händisch" übergibt muss er explizit Anführungszeichen setzen. Beim Übergeben per Drag'nDrop macht das der Explorer automatisch.


Anmelden zum Antworten