Zitat von
Hybrid666:
daran scheints nicht gelegen zu haben
die selben errors kommen und dahinter hängt nun noch ein "Ungültiger Dateiname".
Edit:
Okay ich weiß nun woran es liegt: dein programm versucht auf biegen und brechen nach c:\Dokumente und Einstellungen\User\
Application Data\PLC\Logs zu schreiben. aber ich hab ein deutsches XP, da heißt er ordner leider "Anwendungsdaten" statt application data. Du solltest vielleicht den pfad %appdata%\PLC\Logs verwenden und %appdata% auflösen, hier ein code wie das geht:
Delphi-Quellcode:
function TForm1.GetDirectory: String;
var
Appdata : String;
begin
Appdata := SysUtils.GetEnvironmentVariable('appdata');
if not DirectoryExists (Appdata + '\PLC') then
mkdir (appdata + '\PLC');
if not DirectoryExists (Appdata + '\PLC\Logs') then
mkdir (appdata + '\PLC\Logs');
result := Appdata + '\PLC\Logs';
end;
MfG
du hast recht. hab grad mal nachgeguckt. ich habe eine funktion welche mir das Userprofil zurückgibt (aus der Registry):
Delphi-Quellcode:
function getUserProfilePath : String;
begin
GetEnvironmentVariable('USERPROFILE', cmdBUffer, SizeOf(cmdBuffer)); {Userprofile Variable auslesen}
result:=cmdBuffer;
Profilepath:=cmdBuffer;
end;
allerdings hänge ich danach noch fix die tas_AppData konstante an, welche in meiner myGlobals
Unit fix definiert ist (ich arbeite immer auf englischen Systemen).
Delphi-Quellcode:
// Konfiguration einlesen
getinipath;
getusername;
// Verzeichnis prüfen u. erstellen für Logfile Dateien (Profil\Appdata...)
chkdir(getuserprofilepath+tas_appdata);
myGlobals:
Delphi-Quellcode:
const
condatei:string = 'plc_init.con';
inidatei:string = 'plc_init.ini';
logdatei:string = 'plc_log.log';
sqlcondatei:string = 'plc_conn.dat';
expcdatei:string = 'plc_excp.dat';
logfilesdir:string = '\Application Data\PLC\Logs';
tas_appdata:string = '\Application Data\PLC';
m3u_zeile1 = '#EXTM3U';
m3u_zeile2 = '#EXTINF:';
werde dies umbauen und diese konstanten ins Ini-File auslagern oder aber deine funktion reinhängen...