fgetc und fputc bei ordnerwechsel
-
nzt schrieb:
würde mir sehr helfen
Deine Fragen sind praktisch nicht zu beantworten. Bei der vorherigen konnte ich mit Glück und viel Erfahrung die richtige Antwort erraten. Hier nicht mehr.
Was genau funktioniert nicht? Wie stellst du fest, dass es nicht funktioniert? Was heißt "geht nicht"? Hast du die Rückgabewerte geprüft, den Debugger benutzt oder sonstiges? Mit welchem Ergebnis?
geht das nur mit zeichenweise löschen des pfads im string?
Wovon redest du? Was hast du vor?
Wir sind nicht du. Wir können nicht in deinen Kopf gucken und wissen nicht, wovon du redest, solange du es uns nicht erklärst. Du musst den Kontext für deine Fragen selber angeben, sonst versteht dich niemand.
Du brauchst Hilfe?
Wie man Probleme nachstellbar und nachvollziehbar macht
Wie man Fragen richtig stelltDer beste Rateversuch, der mir gerade einfällt ist, dass du möglicherweise den gleichen Fehler noch einmal wiederholt hast und die Executable ganz woanders ist, als du denkst.
-
ShellExecute(NULL, "open", "prog.exe", NULL, NULL, SW_SHOW);
ist ein befehl um ein programm oder irgend eine datei zu öffnen.da wo das prog.exe steht kann auch ein dateipfad hin,
was mache ich nun wenn ich keinen dateipfad habe?
"..//" vorsetzen geht bei dieser funktion nichtich kann den dateipfad mit getcwd() auslesen und in einen string speichern.
mein problem ist nun ganz simpel:
angenommen ich hab einen string mit einem dateipfad
string pfad = "C://Programme//ordner";
wie bekomme ich jetzt "//ordner" weg?
gibt es da einen befehl oder muss ich da zeichenweise löschen bis ich nur noch
"C://Programme" habe?
-
Versuchs mal mit
"..\\"
statt"..//"
Ansonsten...:
Shell Path Handling Functions
-
hustbaer schrieb:
Versuchs mal mit
"..\\"
statt"..//"
Ansonsten...:
Shell Path Handling Functionsc]"..\"[/c
dabei komme ich in die andere richtung, das klappt aber komischer weise O.ohttps://msdn.microsoft.com/en-us/library/windows/desktop/hh707092%28v=vs.85%29.aspx
PathCchRemoveFileSpec würde perfekt passen, aber das ist c++ oder?
muss das hier in c schreiben.
-
Du hast also den Pfad "C:/Programme/ordner" und möchtest, möglichst ohne umständliches Löschen von Zeichen, den darüber liegenden Order, hier also "C:/Programme", ansprechen? Ich bin nicht der große Windowsshellexperte, aber ich vermute mal, dass dies durch Anfügen von "/.." passen sollte, also indem du aus dem Pfad "C:/Programme/ordner/.." machst.
-
danke das könnte sein, werde das ausprobieren wenn ich zuhause bin.
-
ok habs jetzt getestet, es funktioniert insoweit dass es mir den ordner öffnet.
sprintf(pfad,"%s\\..\\..",pfadname); ShellExecute(NULL, "open", pfad, NULL, NULL, SW_SHOW);
aber wie spreche ich ein bestimmtes programm an?
so gehts nicht:sprintf(pfad,"%s\\..\\..prog.exe",pfadname); ShellExecute(NULL, "open", pfad, NULL, NULL, SW_SHOW);
-
Dein Programm heißt wahrscheinlich nicht ..prog.exe
-
nein es ist lediglich ein beispielname, wenn du auf etwas andeuten willst, ich möchte ein funtool machen, aber nicht was irgendjemandem schaden zufügt.
-
Vielleicht solltest du mal sowohl Antworten als auch dein eigenes Programm genauer lesen.
-
das funktioniert auch nicht..
Danke dennoch für die antworten
-
Was SeppJ Dir sagen möchte, ist:
Dein Programm heißt wahrscheinlich nicht
"..prog.exe", sondern
"prog.exe",
demzufolge sollte Dein Pfad wohl so:sprintf(pfad,"%s\\..\\..\\prog.exe",pfadname);
aussehen ...
-
Danke, soweit funktioniert es.
Hab jetzt nur das problem dass mein programm die eigene kopie starten kann aber die kopie nicht "das recht"? hat fort zu fahren??
Gibt es da irgendwelche einschrenkungen von windows aus?