// Getestet mit D2010 unter
W7
// Bei manchen
Versionen ist es nicht möglich innerhalb einer
// Computersitzung Delphi ein zweites mal zu starten, weil die
// Datei "EditorLineEnds.ttr" nicht erstellt werden kann.
// Das kann man beheben, indem man sich in der Systemsteuerung
// unter Programme und Funktionen die installierten Updates
// anzeigen läßt und die zwei Updates
// KB2970228
// KB2982791
// deinstalliert.
// Sollte das immer
noch nicht funktionieren, kann man sich ein
// eigenes Programm (ohne Formular) schreiben, mit welchem dann Delphi
// gestartet wird. Dazu müssen Sie natürlich das zu startende
// Delphi-Programm und nötige Parameter bei "Shellexecute" hinterlegen.
program Delphi;
uses
Forms,
dialogs,
sysutils,
windows,
shellapi;
var
tmp, dat, loe, neu: string;
const
l = 'loeschdbr';
function DelBeiNeustart(FName: TFilename): boolean;
begin
if FileExists(FName) then
result := MoveFileEx(PChar(FName), nil, MOVEFILE_DELAY_UNTIL_REBOOT)
else
result := false;
end;
procedure pfad;
var
d: DWord;
p: PChar;
begin
d := max_path;
getmem(p, d);
gettemppath(d, p);
tmp := p;
freemem(p);
dat := tmp + 'EditorLineEnds.ttr';
loe := l + '*';
end;
procedure fehler;
begin
showmessage('Aktion fehlgeschlagen. Starten Sie den Rechner neu!');
end;
procedure findDatei;
var
sr: TWin32FindData;
h: THandle;
begin
h := FindFirstFile(PChar(tmp + loe), sr);
if h <> INVALID_HANDLE_VALUE then
repeat
if sr.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
if not DelBeiNeustart(tmp + sr.cFileName) then
begin
fehler;
halt;
end;
end;
until Findnextfile(h, sr) = false;
windows.FindClose(h);
end;
function nam: string;
var
zahl: integer;
n: string;
function nm: string;
begin
result := tmp + l + n + '.ttr';
end;
begin
zahl := 0;
n := '';
while FileExists(nm) do
begin
inc(zahl);
n := inttostr(zahl);
end;
result := nm;
end;
begin
Application.Initialize;
pfad;
neu := nam;
if FileExists(dat) then
if not renamefile(dat, neu) then
begin
fehler;
halt;
end;
if shellexecute(0, 'open',
// hier eigene Daten eintragen (Pfad\Programm, Parameter) ------------
'D:\Program Files\Embarcadero\RAD Studio\7.0\bin\bds.exe', '-pDelphi',
// -------------------------------------------------------------------
nil, sw_show) < 33 then
showmessage(syserrormessage(getlasterror));
findDatei;
end.
|