Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Übergebene Argumente (TCHAR) nur als Sonderzeichen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.04.2008, 22:40 Uhr
~jolig
Gast


Hallo,

ich übergebe meinen Programm von Außen Parameter, die Parameter die im Programm ankommen, sind aber irgendwelche unentschlüsselbare Sonderzeichen. Hab hier ein VC Projekt, das auf Unicode kompiliert.

Setze ich die Parameter im Programm(grade ausgesternt) klappt es wunderbar, nur von außen scheint da nicht verwertbarer müll zu kommen.

was mach ich falsch, oder was muss ich anders machen, damit ich die argumente von Außen verarbeiten kann?


C++:
int main(int argc, TCHAR* argv[])
{

    /*argc = 4;
    argv[1] = L"C://temp//source.doc";
    argv[2] = L"C://temp//target.doc";
    argv[3] = L"Ich bin der Text";*/


    if (argc != 4)
    {
        MessageBox(NULL, L"Anzahl übergebener Parameter\nist falsch!\nParm 1: Pfad Quelldokument\nParm 2: Pfad Zieldokument\nParm 3: Neuer Titel des Zieldokument", L"Fehler bei Aufruf", MB_OK | MB_ICONEXCLAMATION);
        return ERROR_ARGCOUNT;
    }

    //Prüfen ob Quelldatei existiert
    std::wifstream file(argv[1]);
    if(!file)
    {
        std::wstring arg1 = argv[1];
        TCHAR buffer[100] = {0};
        wsprintf(buffer,L"Quelldatei:\n%s\nnicht gefunden", arg1.c_str());
        MessageBox(NULL, buffer, L"Fehler", MB_OK | MB_ICONEXCLAMATION);
        return ERR_SOURCE_FILE_DONT_EXIST;
    }

    //Prüfen ob Quelldatei existiert
  

    return 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.04.2008, 23:29 Uhr
xXx
Devil


? Du kannst dir nicht einfach eine eigene Signatur für die main-Funktion ausdenken! So wie es aussieht, willst du aber durchgehend mit UNICODE arbeiten, richtig?

C++:
#include <windows.h>
#include <fstream>
#include <sstream>

int wmain(int argc, wchar_t** argv)
{
    if (argc != 4)
    {
        ::MessageBoxW(NULL, L"Anzahl übergebener Parameter\nist falsch!\nParm 1: Pfad Quelldokument\nParm 2: Pfad Zieldokument\nParm 3: Neuer Titel des Zieldokument", L"Fehler bei Aufruf", MB_OK | MB_ICONEXCLAMATION);
        return ERROR_ARGCOUNT;
    }

    std::wifstream file_stream(argv[1]);
    if(!file_stream)
    {
        std::wostringstream ss;
        ss << L"Quelldatei: \n\"" << argv[1] << "\" nicht gefunden!";
        ::MessageBoxW(NULL, ss.str().c_str(), L"Fehler", MB_OK | MB_ICONEXCLAMATION);
        
        return ERR_SOURCE_FILE_DONT_EXIST;
    }
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.04.2008, 07:34 Uhr
~jolig
Gast


danke.

es klappt wenn ich main einfach umbennen in wmain, aber wieso ist das so? das versteh cih nicht ganz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.04.2008, 09:13 Uhr
~xxx_off
Gast


Naja die normale Signatur einer main ist entweder:

C++:
int main()
// oder
int main(int argc, char* argv[])

DIese sind so im Standard verankert.

Für Unicode kam eine weitere Signatur, bzw. 2, die durch w am Anfang(für wide string) gekennzeichnet wird.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.04.2008, 10:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi,
es gibt beim VC noch die _tmain-Signatur, die sieht so aus:


C++:
int _tmain(int argc, TCHAR* argv[])



das _tmain wird dann entsprechend auf auf main oder wmain umgemünzt, und TCHAR auf wchar_t oder auf char, je nachdem ob unicode-definiert ist oder nicht. Dadurch das du die beiden Signaturen vermischt hast, waren deine Parameter kaputt, weil das Programm von "außen" die Nicht-Unicode-Parameter in deine wchars gepackt hat und dadurch unicodezeichen rauskamen die keinen Sinn mehr ergaben.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: