Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   den Delphi Code Formatter ins eigene Programm einbinden ... (https://www.delphipraxis.net/168481-den-delphi-code-formatter-ins-eigene-programm-einbinden.html)

madtom 23. Mai 2012 20:49

den Delphi Code Formatter ins eigene Programm einbinden ...
 
Hallo zusammen,

ich habe ein wenig herumexperimentiert und versucht, den Delphi Code-Formatter in das eigene Programm (eine eigene Codeschnipseldatenbank) zu integrieren.
Ob das allerdings erlaubt ist, habe ich nicht herausbekommen können. Schließlich kann man ihn ja auch aus der Konsole heraus aufrufen.
Es funktioniert soweit ganz gut.

Delphi-Quellcode:
// aus dem SwissDelphiCenter:
function ShellExecuteAndWait(Operation, FileName, Parameter, Directory: string; Show: Word;
  bWait: Boolean): LongInt;
var
  bOK: Boolean;
  ShExecInfo: TShellExecuteInfo;
begin
  FillChar(ShExecInfo, SizeOf(ShExecInfo), Chr(0));
  ShExecInfo.cbSize := SizeOf(ShExecInfo);
  ShExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
  ShExecInfo.lpVerb := PChar(Operation);
  ShExecInfo.lpFile := PChar(FileName);
  ShExecInfo.lpParameters := PChar(Parameter);
  ShExecInfo.lpDirectory := PChar(Directory);
  ShExecInfo.nShow := Show;
  bOK := Boolean(ShellExecuteEx(@ShExecInfo));
  if bOK then
  begin
    if bWait then
    begin
      while WaitForSingleObject(ShExecInfo.hProcess, 100) = WAIT_TIMEOUT do
        Application.ProcessMessages;
      bOK := GetExitCodeProcess(ShExecInfo.hProcess, DWORD(Result));
    end
    else
      Result := 0;
  end;
  if not bOK then
    Result := -1;
end;

procedure TFrmMain.acCodeFormatterExecute(Sender: TObject);
var
  TempFile: string;
  ConfigFile: string;
begin
  Screen.Cursor := crHourGlass;
  try
    TempFile := GetEnvironmentVariable('temp') + PathDelim + 'Temp.pas';
    ConfigFile := 'Formatter.config';
    SynMemo1.Lines.SaveToFile(TempFile);
    if ShellExecuteAndWait('open', ExtractFilePath(Application.ExeName) + 'Formatter.exe',
      ' -delphi -config ' + ConfigFile + ' ' + TempFile, ParamStr(0), SW_HIDE, True) = 0 then
      SynMemo1.Lines.LoadFromFile(TempFile)
    else
      raise SysUtils.Exception.Create('Es ist ein Fehler beim Formatieren aufgetreten.' + #13#10 +
        'Wenden Sie sich bitte an ihren IT-Koordinator.');
    // ShellExecute(Handle, 'open', PChar(ExtractFilePath(Application.ExeName) + 'Formatter.exe'),
    // PChar(' -delphi -config ' + ConfigFile + ' ' + TempFile), nil, SW_HIDE);
    // Sleep(1000);
    // SynMemo1.Lines.LoadFromFile(TempFile);
  finally
    Screen.Cursor := crDefault;
  end;
end;
Beste Grüße

Namenloser 23. Mai 2012 21:09

AW: den Delphi Code Formatter ins eigene Programm einbinden ...
 
Solange du die Formatter.exe nicht deinem Programm beilegst oder sonstwie weitergibst, sollte es imo kein Problem sein.

madtom 23. Mai 2012 21:11

AW: den Delphi Code Formatter ins eigene Programm einbinden ...
 
Meine Programme sind nur für mich - Hobbyprogrammierer. :-D

BUG 23. Mai 2012 21:17

AW: den Delphi Code Formatter ins eigene Programm einbinden ...
 
Ich stelle mir gerade den armen Admin (in der Rolle des "IT-Koordinator") vor, wenn jemand mit dieser Fehlermeldung ankommt :mrgreen:
Zitat:

Es ist ein Fehler beim Formatieren aufgetreten. Wenden Sie sich bitte an ihren IT-Koordinator.
Aber wenn du alle Personen bist, die damit in Kontakt kommen, sollte das ja kein Problem sein :stupid:

madtom 23. Mai 2012 21:19

AW: den Delphi Code Formatter ins eigene Programm einbinden ...
 
Wie gesagt, da ich mein eigener Admin bin ...:-D
(Sollte nur wichtig klingen ...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz