Ini Files
-
Wer lesen kann ist klar im Vorteil. In der Hilfe zu TIniFile steht klar und deutlich, daß die Ini-Datei default-mäßig im Win-Verzeichnis angelegt wird.
-
sag ich doch

-
ini = new TIniFile(ExtractFilePath(Application->ExeName) + "skins.ini");
ist falsch.
dann erhält ini ja den pfad von
C:\Programme\MeinProg\Prog.exeskins.ini
das kann also nicht stimmen.
es funkt auch nicht

was nu?
mfg Olf
-
oops
-
hast du es überhaupt ausprobiert???
mit ExtractFilePath() kriegst du nur den pfad der EXE datei
-
natürlich habe ich es ausprobiert!!
ich saß 2 tage davor!!!aber ich bekomme pfad + datei.exe

mfg Olf
-
olf schrieb:
aber ich bekomme pfad + datei.exe
Mit Sicherheit nicht, es sei denn, du verwendest
ini = new TIniFile(Application->ExeName + "skins.ini");o.ä., also ohne das ExtractFilePath.
Eventuell hilft dir aber auch das hier weiter.
-
doch!
ich bekomme den pfad + exe

ich habe es probiert mit
ShowMessage(ExtractFilePath(Application->ExeName));
und da kam C:\....\Olf\Desktop\Prog.exe raus

mfg Olf
-
Hallo olf,
bitte prüfe das erneut.
Ich hab' etliche Programme im Einsatz in denen ich ExractFilePath(Applicatin->ExeName) verwende. Diese Funktion wird bei uns firmenweit etliche hundert Mal täglich aufgerufen. UND NOCH NIE ist das von Dir beschriebene Verhalten aufgetreten. Bist Du sicher, dass Du den Code tatsächlich wie unten beschrieben aufrufst??? Versuch's doch bitte mal in einem ganz neuen Projekt. Irgendetwas kann da nicht stimmen.Und seit wann legt man Programme auf den Desktop, da gehören bestenfalls Verknüpfungen zu Programmen hin.

-
ich benutze die finktion auch in vielen progs, und immer hats geklappt
-
Ich verwend die Funktion auch überall. Ist immer schon einwandfrei gegangen.
-
Evtl. hat der Builder dein Projekt noch nicht aktualisiert (TempFiles löschen) oder dein exe-Name könnte zu Problemen führen (unwarscheinlich).
-> mehr Details!
-
du kannst den Pfad zur exe auch mit GetCurrentDirectory raus bekommen, zum beispiel so:
char szBuffer[MAX_PATH]; GetCurrentDirectory(MAX_PATH, (LPSTR) szBuffer); //z.b. szBuffer = "C:\myApps\myProgramm"; //und ich würde dann so weiter machen: strcat(szBuffer, "\\meine.ini"); //z.b. szBuffer = "C:\myApps\myProgramm\meine.ini"; ini = new TIniFile(szBuffer); //usw....Du findest GetCurrentDirectory in der Winbase.h, bzw Windows.h.
MFG Hacke
-
GetCurrentDirectory liefert nicht den Pfad zum Installationsverzeichnis, sondern den zum Arbeitsverzeichnis. Letzteres kann sich durch verschiedene Aktionen (z.B. Dateiauswahl per OpenDialog) während der Programmausführung ändern.
Ich kann zwar nach wie vor nicht glauben, dass ExtractFilePath bei olf nicht korrekt funktioniert (richtige Anwendung vorausgesetzt), aber natürlich kann man das zur Not auch ohne grosse Probleme selbst extrahieren.
String GibDateiPfad(String FullName) { int pos = FullName.LastDelimiter("\\"); if (pos) return FullName.SubString(1, pos); else return 0; }