Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten

  Alt 2. Jun 2006, 08:46
Zitat von Angel4585:
ich hab jetz au grad alles angehakt wo en Haken dran iss.. des geht ewig mit dem JPEG erstellen... könnte man da nich en Fortschrittsbalken oder so reinmachen, damit man weis ob man schnell en Kaffee trinken gehn kann?(Mein dauert jetzt schon 2 Minuten )
Solange die schwarze "Dos-Box" sichtbar ist wird auf jeden Fall das jpg erzeugt.
Falls die weg sein sollte, stimmt was nicht. (evtl ist wegen eines Fehlers kein jpg erzeugt worden.)

Ich habe das ganze in einer schnellen "quick and dirty" Methode geschrieben.
Ich kann nicht ausschliessen, dass noch Fehler enthalten sind.

Einen Fortschrittsbalken kann ich Dir nicht bieten, da ich "nur" ein externes Programm zur Erstellung aufrufe:
Code:
dot -Tjpg -otemp.jpg temp.dot
"temp.dot" enhällt den Inhalt des rechten Memos.
"temp.jpg" wird dann durch "dot.exe" erstellt.

Falls "dot.exe" beendet und die "temp.jpg" nicht erstellt wird, wartet das Programm endlos.
Deshalb habe ich den Cancel Button eingebaut.

Hier der Quellcode des Buttons:
Delphi-Quellcode:
...
procedure TForm1.btnDotClick(Sender: TObject);
begin
  if Memo2.Lines.Count = 0 then exit;
  btnDot.enabled := false;
  btnCancel.Visible := True;
  if fileexists('temp.jpg') then
  begin
    if not DeleteFile('temp.jpg') then
    begin
      MessageDlg('Can''t delete file "temp.jpg".', mtError, [mbCancel], 0);
      btnDot.Enabled := True;
      btnCancel.Visible := False;
      exit;
    end;
  end;
  StatusBar1.SimpleText := ' save temp dot file';
  Memo2.Lines.SaveToFile('temp.dot');
  StatusBar1.SimpleText := ' create jpg from dot file';
  if not fileexists(StartPath+'dot.exe') then
  begin
    MessageDlg('Can''t find file "'+StartPath+'dot.exe".', mtError, [mbCancel], 0);
    btnDot.Enabled := True;
    btnCancel.Visible := False;
    exit;
  end;
  shellapi.ShellExecute(Form1.Handle, 'open', PChar(StartPath+'dot.exe'),
    '-Tjpg -otemp.jpg temp.dot', '.', SW_SHOWNORMAL);
  StatusBar1.SimpleText := ' wait for jpg file';
  while not (fileexists('temp.jpg') or myTerminate) do
  begin
    Application.ProcessMessages;
  end;
  StatusBar1.SimpleText := ' view jpg file';
  shellapi.ShellExecute(Form1.Handle, 'open', 'temp.jpg', '', '', SW_SHOWNORMAL);
  btnDot.Enabled := True;
  btnCancel.Visible := False;
  StatusBar1.SimpleText := ' finished';
end;
...
procedure TForm1.btnCancelClick(Sender: TObject);
begin
  myTerminate := True;
  btnCancel.Visible := False;
end;
Ich hoffe diese Infos helden Dir.

Ich werde nach meinem Urlaub noch etwas an dem Code formatieren und dokumentieren.
Wenn er dann den Ansprüchen einer Veröffentlichung genügt, werde ich ihn evtl komplett veröffentlichen.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat