Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.04.2011, 17:45

Leerzeichen verursacht Probleme

Hallo Forum

ich hatte schon in einigen Projekten Probleme mir Leerzeichen: Die Programme schliessen siche einfach, wenn ich Strings oder Chars benutze, die Leerzeichen enthalten.

Hier noch eine Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
char path[1024];
ifstream datei;
    datei.open("config.txt",ios::binary);
    datei.getline(path,1024);


  CString p;    
    for(int i=0;i<=1024;i++){
        p+=path[i];
    }   
    //cout <<"here: "<<p<<"!";
    system("start " + p);


Wenn im Pfad ein Leerzeichen steht, schliesst sich das Programm oder es funktioniert einfach nicht.

Der Zeichensatz ist Multibiye.

Ich habe schoen extrem viel versucht, aber es will einfach nicht funktionieren.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

09.04.2011, 18:06

ein
start programm name.exe
wird als
starte "programm" mit dem parameter "name.exe"
interpretiert

Du musst pfade mit anführungsstrichen umschließen, wenn sie leerzeichen enthalten

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

3

09.04.2011, 23:43

Schau dir den Befehl ShellExecute() an, der ist in jeder Hinsicht besser.
http://msdn.microsoft.com/en-us/library/…3(v=vs.85).aspx

Dein Programm wird in dem Fall mit Leerzeichen nicht nur kurz geöffnet, sondern gar nicht. Das, was du siehst, ist die Konsole (cmd.exe).

4

10.04.2011, 00:19

Schau dir den Befehl ShellExecute() an, der ist in jeder Hinsicht besser.
http://msdn.microsoft.com/en-us/library/…3(v=vs.85).aspx

Dein Programm wird in dem Fall mit Leerzeichen nicht nur kurz geöffnet, sondern gar nicht. Das, was du siehst, ist die Konsole (cmd.exe).
Ok danke,

das sieht ja shr gut aus! Ich versuche jetzt, das Programm so zu starten:

C-/C++-Quelltext

1
HINSTANCE program = ShellExecute(0,"open",LPCTSTR(p),0,0,SW_SHOW);


Leider hat program einen Wert von 00000002. Scheinbar ist p kein voll qualifizierter Pfad.

Was kann ich anders machen?

Achja: Wenn ich manuell einen Pfad eingebe funktioniert es perfekt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »gethan« (10.04.2011, 00:57)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

10.04.2011, 08:23

Typischer Fall für einen Debugger, würde ich mal sagen. Den Inhalt der Variablen p anschauen, feststellen, dass er falsch ist und den Grund beheben.
Ich weiß ja, dass für viele das Forum ebenfalls ein Debugger ist, aber wirklich ganz ernsthaft, sowas kann man alleine mit einem Debugger schneller beheben.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige