// 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.

 


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke