relativer Verweis auf die Datei

and

Grünschnabel
Hallo zusammen,

bin am verzweifeln und brauche Hilfe.

Ich habe folgendes vor. Ich möchte in einer Zeichenfolge einen relativen Verweis auf die txt Datei definieren. Relativ zu der *.exe und zwar wie folgt:
Code:
static char *p [] = {
	"lu=0",
	"el=be",
	"nadgrids=.\\beta_version.txt",
	// "nadgrids=C:\\Programme\\my_test\\beta_version.txt",
	"units=cm",
	"no_defs"
};
Statt einen absoluten Verweis (C:\\Programme\\my_test\\beta_version.txt) in der Zeichenfolge, möchte ich einen relativen Verweis (.\\beta_version.txt) definieren.
Wenn ich den absoluten Pfad angebe, funktioniert es wunderbar. Sobald ich aber das Programm mit dem relativen Pfad ausführen, wird die txt Datei nicht gefunden.

Woran liegt es? Bitte um Hilfe.

Ich bedanke mich im Voraus
and
 
Wenn du deine .exe imm gleichen ordner hast wie die .txt dann kanst du ja die Backslashes
weglassen (oder solltest :P). Wenn die Datei im Unterordner liegt, kommt da ein bzw. zwei Backslashes hin. Den Ordner "über" dem mit deiner .exe erreichst du mit ZWEI Punkten vor den Backslashes. Also:
1. "hallo.txt"
2. "\\hallo.txt"
3."..\\hallo.txt"
greetz Skini
 
Wenn du das Programm mit Visual Studio im Debug-Modus startest, kann es passieren, dass er die Datei nicht findet... solange du das Programm nicht ohne Debug-Modus startest, musst du absolute Pfade benutzen :) .
 
Hallo,

vielen Dank erstmal für die Antwort.

Das Problem ist, dass ich die Zeichenfolge anschließend an eine Funktion übergebe, die in einer dll deklariert ist. An die Funktion aus der dll komme ich aus rechtlichen Gründen nicht dran. Die exe Datei wird anschließend von einem andren Programm aus aufgerufen und liefert entsprechende Ergebnisse. Ist die *.txt (s.o.) nicht eingebunden sind die Ergebniswerte falsch.

Ich habe die o.g. Vorschläge ausprobiert, trotzdem klappt es nur mit einem Absolutenpfad, dass sicherlich nicht die beste Lösung ist. Ich habe die .txt Datei auch verschoben in unterschiedliche Pfade und diese Pfade dann relativ zu der exe angegeben, trotzdem klappt es nur mit einem Absolutenpfad.

Ich verwende zwar das MS Visual Studio aber nur für die Erstellung der exe Datei. Anschließend wird von anderer Quelle aus die exe Datei aufgerufen.

Ach ja, ich habe mal gesehen das der Zugriff auf der Linux- Umgebung wohl wie folgt funktioniert:
Code:
…
"nadgrids=./beta_version.txt",
…

Warum nicht unter Windows? Woran kann es liegen?
 
Ich weiß nicht obs hilf aber erstell doch einfach mal eine Datei im Relativen Pfard dann such nach der Datei dann weißt du wir er durch die Strukturen geht.
So hab ich das Problem mal gelöst.
 
Hallo,

vielen Dank für die Unterstützung!
Die letzten beiden Schritte habe ich leider nicht ausprobiert aber es klappt bei mir auch wie folgt.
Bevor ich auf die erstellte exe Datei zugreife, übergebe ich den Pfad von anderer Umgebung (relativ) und überschreibe die Stelle in der Zeichenfolge:
Beispiel:
Code:
p[2] = pfad.string2;

Gleich zur Beginn wird die Stelle in der Zeichenfolge überschrieben.
Ich weiß, es ist nicht die beste Lösung, aber es reicht im Moment. Wenn ich mal Zeit habe, dann probiere ich die o.g. Schritte aus.

Vielen Dank noch mal!
 
engelmarkus hat gesagt.:
Wenn du das Programm mit Visual Studio im Debug-Modus startest, kann es passieren, dass er die Datei nicht findet... solange du das Programm nicht ohne Debug-Modus startest, musst du absolute Pfade benutzen :) .

Leroux hat gesagt.:
Ich weiß nicht obs hilf aber erstell doch einfach mal eine Datei im Relativen Pfard dann such nach der Datei dann weißt du wir er durch die Strukturen geht.
So hab ich das Problem mal gelöst.

Code:
GetCurrentDirectory()
SetCurrentDirectory()

ist hier die lösung...
 
Zurück