ich hänge einfach fest
-
Maik135 schrieb:
hi danke simon2 aber kannst du mir auch sagen was ich da anderst machen soll weil das ist ja der pfad zur datei. lg maik
Du musst statt '\' einfach jedesmal '\' verwenden, wie du es ja auch teilweise getan hast. Google mal nach Escapesequenzen.
-
hi danke funktionier super. hast du auch ne idee wie ich z.b. auch ein leid öffnen kann also eine mp3 datei weil das hier geht ja nur für exe. lg maik
-
Ich bin mir nicht sicher, aber unter Windows müsstest du Dateien die mit einer Anwendung (bei mp3's also dein Player) mit SchellExecuteEx öffnen können.
Gruß
-
-
den player hab ich mit _spawnl_ geöffnet ging recht einfach nur wenn ich z.b. eine mp3 datei auf dem desktop habe wenn ich die abspielen will wie mit eine normalen doppelklick nur über c++ wie das geht würde mich interessieren so wie der link hier vor mir nur will ich nicht einen ganzen player programmieren sondern einfach das er die mp3 datei aufmachen und dann normal in winamp oder so wiedergeben.
gruß maik
-
ShellExecuteEx? schrieb:
Ich bin mir nicht sicher, aber unter Windows müsstest du Dateien die mit einer Anwendung (bei mp3's also dein Player) mit SchellExecuteEx öffnen können.
Jupp, bin ich auch der Meinung (, dass das Verb "open" sich wie ein Doppelklick auf das Dateisymbol auswirkt)

-
Das Ganze ist mit ShellExecute oder ShellExecuteEx ein Einzeiler...
ShellExecute(NULL, "open", "C:\\test.mp3", NULL, NULL, SW_SHOWDEFAULT);Diese Zeile öffnet die Datei test.mp3 mit dem Player der für MP3 Dateien zuständig ist...
Gruß
-
hi leute wegen dem ShellExecute ich bin einfach zu doof bin aber uach absoluter grünschnabel meine programmzeile ist diese hier :
case 3188 : std::cout << "Zugang gestattet \n"; ShellExecute(NULL, "C:\\Programme\\Winamp\\winamp.exe", "C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", NULL, NULL, SW_SHOWDEFAULT); break; std::cout << std::endl;
so das ist auch alles okay nur sagt er dann:
1>------ Erstellen gestartet: Projekt: zugang 2, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>zugang 2.cpp
1>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\zugang 2\zugang 2\zugang 2.cpp(22) : error C2065: 'SW_SHOWDEFAULT': nichtdeklarierter Bezeichner
1>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\zugang 2\zugang 2\zugang 2.cpp(22) : error C3861: "ShellExecute": Bezeichner wurde nicht gefunden.
1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Maik\Eigene Dateien\Visual Studio 2008\Projects\zugang 2\zugang 2\Debug\BuildLog.htm" gespeichert.
1>zugang 2 - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========muss ich da noch irgendwas beachten zwecks präprozesor befehl ?
danke für antworten
maik
-
#include <windows.h>vergessen?Grüssli
-
boah ich bin so blöd ja ich hab den befehl vergessen aber jetzt wo ich ihn drin habe habe ich wieder 2 fehler:
1>------ Erstellen gestartet: Projekt: zugang 2, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>zugang 2.cpp
1>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\zugang 2\zugang 2\zugang 2.cpp(23) : error C2664: 'ShellExecuteW': Konvertierung des Parameters 2 von 'const char [31]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Maik\Eigene Dateien\Visual Studio 2008\Projects\zugang 2\zugang 2\Debug\BuildLog.htm" gespeichert.
1>zugang 2 - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========und hier die zeile:
case 3188 : std::cout << "Zugang gestattet \n"; ShellExecute(NULL, "C:\\Programme\\Winamp\\winamp.exe", "C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", NULL, NULL, SW_SHOWDEFAULT); break; std::cout << std::endl;
gruß
-
Schalt mal auf Multibyte um, oder benutze wchar_t.
-
hi kannst du mir das genauer sagen was ich dazu alles rein schreiben muss ein verbesserung von meinem code wäre evt nicht schlecht weil ich bin absolut neu aúf dem gebiet und schlage mcih mehr oder weniger mit einem buch run.
danke
gruß
-
Maik135 schrieb:
hi kannst du mir das genauer sagen was ich dazu alles rein schreiben muss ein verbesserung von meinem code wäre evt nicht schlecht weil ich bin absolut neu aúf dem gebiet und schlage mcih mehr oder weniger mit einem buch run.
danke
gruß
Dann musst du aber mal aktuellen Code zeigen.
Wegen umschalten auf Mutlibyte. Wenn du VC++ hast:
Projekt -> Konfigurationseinstellugen und dann dort den Zeichensatz auf Mutli-Byte umstellen.
-
// zugang.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//#include "stdafx.h"
#include <iostream>
#include <process.h>
#include <stdio.h>
#include <windows.h>void main()
{
int Code;
std::cout << "Code geschuezter Bereich" << std::endl;
std::cout << std::endl;
std::cout << "Geben sie den vierstelligen Code ein: ";
std::cin >> Code;
std::cout << std::endl;
std::cout << "Code pruefen... " << std::endl;
std::cout << std::endl;switch (Code)
{
case 3188 : std::cout << "Zugang gestattet \n"; ShellExecute(NULL, "C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", "C:\\Programme\\Winamp\\winamp.exe ", NULL, NULL, SW_SHOW); break; std::cout << std::endl;
default : std::cout << "Zugang nicht gestattet \n";break; std::cout << std::endl;
}
}hier der quellcode funktioniert aber mit multibyte auch nicht. keine ahnung wo der fahler sein soll bin noch anfänger.
freue mich auf eine antwirt evt mit code verbesserung.
gruß
-
Das ist jetzt nicht böse gemeint, aber achte bitte auf folgende Dinge, dann werden sicher auch mehr Leute motiviert sein, dir zu helfen:
- Wähle einen passenden Threadtitel.
- "Funktioniert nicht" ist keine Fehlerbeschreibung. Wenn du Hilfe erwartest, musst du schon sagen, was nicht geht.
- Um Codebeispiele zu zeigen, gibt es [cpp]-Tags (erste weisse Schaltfläche unter dem Eingabe-Textfeld). Benutz diese doch bitte, das macht den Code gleich viel übersichtlicher.
- Bitte achte dich ein wenig auf Gross-/Kleinschreibung oder wenigstens auf Satzzeichen. Sätze wie der folgende sind kaum lesbar:
Maik135 schrieb:
den player hab ich mit _spawnl_ geöffnet ging recht einfach nur wenn ich z.b. eine mp3 datei auf dem desktop habe wenn ich die abspielen will wie mit eine normalen doppelklick nur über c++ wie das geht würde mich interessieren so wie der link hier vor mir nur will ich nicht einen ganzen player programmieren sondern einfach das er die mp3 datei aufmachen und dann normal in winamp oder so wiedergeben.
Noch einige Anmerkungen zum Code:
- <stdio.h> ist kein C++-Header. Benutze anstattdessen <cstdio>, wenn du ihn überhaupt benötigst.
main()hatte schon immer den Rückgabetypenint.- Anweisungen, die in einem
switch-Block nach einembreak;und vor der nächsten Sprungmarke (in deinem Falledefault:) stehen, werden niemals ausgeführt.
-
Maik135 schrieb:
// zugang.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" #include <iostream> #include <process.h> #include <stdio.h> #include <windows.h> void main() { int Code; std::cout << "Code geschuezter Bereich" << std::endl; std::cout << std::endl; std::cout << "Geben sie den vierstelligen Code ein: "; std::cin >> Code; std::cout << std::endl; std::cout << "Code pruefen... " << std::endl; std::cout << std::endl; switch (Code) { case 3188 : std::cout << "Zugang gestattet \n"; ShellExecute(NULL, L"open", L"C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", "C:\\Programme\\Winamp\\winamp.exe ", NULL, NULL, SW_SHOW); // Macro hinzugefügt für LPWSTR Pointer break; std::cout << std::endl; default : std::cout << "Zugang nicht gestattet \n";break; std::cout << std::endl; } }hier der quellcode funktioniert aber mit multibyte auch nicht. keine ahnung wo der fahler sein soll bin noch anfänger.
freue mich auf eine antwirt evt mit code verbesserung.
gruß
-
"C:\\Programme\\Winamp\\winamp.exe "
L"C:\\Programme\\Winamp\\winamp.exe "außerdem solltest du:
ausShellExecute(NULL, L"open", L"C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", L"C:\\Programme\\Winamp\\winamp.exe ", NULL, NULL, SW_SHOW);vielleicht mal:
ShellExecute(NULL, L"open", L"C:\\Programme\\Winamp\\winamp.exe ", L"C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", NULL, NULL, SW_SHOW);machen, schließlich willst du Winamp mit dem Lied als Parameter starten und nicht umgekehrt und eine gescheite Fehlerbeschreibung, Compilermeldungen etc. und die Befolgung der Ratschläge der Poster vor mir wären wirklich nicht schlecht gewesen.
-
Hallo, am anfang ging es ja darum eine römische ziffer in eine arabische zahl umzuwandeln, ich hab das mal versucht ein wenig zu erweitern, finde jedoch meinen sematischen fehler nicht... compilieren tut er...
#include <iostream> int main() { char roemische_ziffer; int i, summe=0; int *arabische_zahl = NULL; std::cout << "Geben Sie ein wie viele Ziffern ihre Römische Zahl besitzt: "; std::cin >> i; arabische_zahl = new int[i]; for (int n=0;i<n;i++) { std::cout << "Bitte geben sie ihre roemische Zahl ein (nach jeder Ziffer ein Return): "; std::cin >> roemische_ziffer; switch(roemische_ziffer) { case 'I': arabische_zahl[i] = 1; break; case 'V': arabische_zahl[i] = 5; break; case 'X': arabische_zahl[i] = 10; break; case 'L': arabische_zahl[i] = 50; break; case 'C': arabische_zahl[i] = 100; break; case 'D': arabische_zahl[i] = 500; break; case 'M': arabische_zahl[i] = 1000; break; default : std::cout << "Falsche Eingabe!"; continue; } summe = summe + arabische_zahl[i]; } std::cout << "Ihre roemische Zahl entspricht der arabischen Zahl: " << summe << std::endl; return 0; }nach der eingabe wie viele ziffern die römische zahl besitzt gibt er immer "Ihre roemische Zahl entspricht der arabischen Zahl: 0" aus...
-
kurz in die Glaskugel guck, schätze es liegt an der for-Schleife
for (int n=0;i<n;i++)(i ist nie kleiner n, es sei denn der User gibt eine negative Anzahl an stellen ein für die römische Zahl, was bissel seltsam wäre)

for (int n=0; n < i; n++)ich glaube du bist mit n und i bissel durcheinander gekommen,
Tipp: nenne die Laufvariable nicht n sondern immer i, ist so usus
PS:
schau dir mal std::string etc. an ... dann brauchst nicht extra erfragen, wie viele Zeichen kommen und kannst alles auf einmal einlesen ^^
-
Paul Manns schrieb:
Tipp: nenne die Laufvariable nicht n sondern immer i, ist so usus

Und im Kontext römischer Ziffern würde ich schon fast darauf bestehen bei verschachtelten Schleifen sie so zu nennen:
for(int i = ...) for(int ii = ...) for(int iii = ...) for(int iv = ...) for(int v = ...) for(int vi = ...) for(int vii = ...)So treibt man schnell jemanden in den Wahnsinn.
