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.ewcDas 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:\DokumenteDas 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.