Entwickler-Ecke

Sonstiges (Delphi) - Delphi IDE: Programm nach Kompilieren ausführen (OTA) [done]


MaxiTB - So 29.02.04 08:48
Titel: Delphi IDE: Programm nach Kompilieren ausführen (OTA) [done]
Grüße !

Ich hab mal eine Frage jenseits der Programmierung - und zwar eine organisatorische, welche mich schon immer ein bisserl in Delphi stört.

In MS Visual Studio ist es möglich, nach einem Kompiler-Run projektabhängig in den Einstellung ein Programm und Parameter anzugeben, welches nach jedem kompilieren ausgeführt werden soll. Sowas habe ich leider in der Delphi-IDE noch nicht finden können ...

:?: Gibts sowas ?

:?: Wenn Nein, wie kann man am einfachsten sowas realisieren ?

Vielleicht bin ich ja nur ein bisserl blind, aber als alter C Haudegen kenne ich immer noch nicht alle Geheimnisse der IDE :wink: .

PS: Ein Schlem, der nach der Überschrift dachte, ich kenne den Menüpunkt 'Run' nicht *g*. Geht natürlich um was anderes.


Martin77 - So 29.02.04 13:33

Hab letztens mal nen alten batch gefunden, du kannst das kompilieren ja auch per Kommandozeile machen :). Packs innen batch und führe danach aus was du meinst :) Geht dann halt nicht mehr per IDE :(


Delete - So 29.02.04 14:17

Start -> Parameter. Meinst du das? Also die fertig kompilierte Exe gleich mit Parametern starten?


MaxiTB - So 29.02.04 16:24

::Martin77

Hab mal irgendwann gehört, es gibt Unterschiede zwischen dem IDE Compiler und den Kommadozeilencompiler.

Abgesehen davon ist genau mein Problem, daß ich immer wieder vergessen mein Pogrämmchen nachher auszuführen (führt vor allem Versionsmanagment-Sachen durch aber auch File transfers auf meinem FTP-Server). Daher hätte ichs gerne, daß es eben automatisch ausgeführt wird ... kann ich wohl vergessen.

::Luckie

Nop - das meinte ich eben nicht. Will nach dem Kompilieren ein anderes Programm starten. Und zwar eben genau -nach- dem Kompilieren. Am besten von der IDE eben aus und voll automatisch.

Mir fällt da gerade ein, daß man ja in die Delphi-IDE Menüs usw. reinbasteln kann ... vielleicht kann ich ja einen neuen Menüpunkt basteln, der den compile mit anschließenden Ausführen des Programms macht ...

Für Hinweise wäre ich dankbar - das fertige PlugIn poste ich dann klarerweise hier !


MaxiTB - So 29.02.04 16:56

Okay - hab mich ein bisserl schlau gemacht und ich denke mal, die einzige Lösung für mein Problem ist die OTA - OpenToolAPI für Delphi.

Hat jemand damit schon Erfahrungen gemacht ?
Ich hab bis jetzt nur gehört, sie soll ziemlich buggy sein und nicht wirklich vollständig.

Ich brauche ja nur zwei Dinge:

:arrow: Entweder ein Event, welches aufgerufen wird, nachdem ein Kompiliervorgang gestartet wurde.

:arrow: Oder wie ich das aktuelle Projekt kompiliere.

Erste Sache ist natürlich feiner ...
Ein paar Infos habe ich schon gefunden, die sind aber nicht wirklich aussagekräftig was das Kompilieren angeht.

http://www.tempest-sw.com/opentools


Martin77 - So 29.02.04 19:38

Du willst nach jedem compilieren das Ding auf deinen FTP Server hochladen,...

Ich weiss nicht, also wenn ich ne zeile code ändere wird die auch getestet udn ic hlade nciht zuerst die neuste Version hoch, auch will ich nicht meinen aktuellen Stand im CVS bereitstellen -> da nicht getestet.

Also ich habe mir dafür nen kleiens Delphi Tool geschrieben, lade per INDY Sachen auf meinen FTP hoch ,verschicke emails,...

Das mit dem Batch verwende ich für "kleiner" Sachen, z.B. nen Backup zu machen doer so.

Gruß Martin


MaxiTB - So 29.02.04 20:02

Hochgeladen wird doch nur, wenn sich die Minor Nummer oder der Release State ändert.
Aber es werden eine Menge andere Sachen gemacht, z.B. Skripte angepaßt, Pfade und Dateinamen aktualiert., Setup-Scripte für Patches geändert usw.


Motzi - So 29.02.04 20:46

Also wie es geht weiß ich nicht, aber dass es mit der OTA geht weiß ich.. wend dich vielleicht mal an Madshi (http://www.madshi.net), dessen madExcept "patch" auch nach dem kompilieren die Exe-Datei.. kannst ihn ja mal fragen ob er dir da ein bisschen hilft... (oder aber du kaufst dir den Source von madExcept um schlappe 40€ ;))


Martin77 - So 29.02.04 22:27

MaxiTB hat folgendes geschrieben:
Hochgeladen wird doch nur, wenn sich die Minor Nummer oder der Release State ändert.
Aber es werden eine Menge andere Sachen gemacht, z.B. Skripte angepaßt, Pfade und Dateinamen aktualiert., Setup-Scripte für Patches geändert usw.


Jo, aber das hat doch nix mit deinem compilieren zu tun,es klang so als ob du nach jedem compilieren deine exe hochladen wolltest,...

Das was du suchst ist ein komplettes Versionsmanagment System. Der compiler müsste als nach dem compilieren noch deine Versionsnummer überprüfen,.... glaubst du nicht das das nen 2.er Schritt wäre. Ich fidne das hat mim compilieren bzw. dem Prozess nix zu tun. Das compilieren ist meiner Meinung nach vielmehr ein Schritt in dem was du machen willst und nicht andersherum.


Würde mich allerdings interessieren wie du weitervorgehst ,weil das Thema natürlich sehr interessant ist.


Gruß Martin


MaxiTB - So 29.02.04 22:41

::Motzi

Tnx für den Tip - und zum Source kaufen bin ich noch zu arm :wink: .

::Martin77

Ich such nix, ich hab schon *g*. Nur integieren in die IDE muß ichs noch.
Aber das mit der OTA schaut gut aus, dann kann ich endlich auch so Sachen wie meinen LanguageManager von der IDE aus ausrufen.


Alibi - Mo 01.03.04 00:03

Zitat:

und zum Source kaufen bin ich noch zu arm

Win2000, WinXp, Workbench ;-)
D7 Ent, VS.net Ent


Hmjo.


Martin77 - Mo 01.03.04 08:14

hab Ich mir auch gedacht, vielleicht sind es Schülerversionen ;) das VS NET Ent. kostet nen Schüler/Studi soweit ich weiss gut 150 Euro ;)

Martin


MaxiTB - Mo 01.03.04 09:54

Jungs, irgendwann muß man doch anfangen zu sparen ;-) .

Habe übrigends was zum Thema gefunden und will es euch nicht vorbehalten:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
unit jrIDENotifier;

interface

procedure Register;

implementation

uses
  SysUtils, TypInfo, ToolsApi;

var
  NotifierIndex: Integer;

type
  TjrIDENotifier = class(TNotifierObject, IOTANotifier, IOTAIDENotifier)
  protected
    procedure AfterCompile(Succeeded: Boolean);
    procedure BeforeCompile(const Project: IOTAProject; var Cancel: Boolean);
    procedure FileNotification(NotifyCode: TOTAFileNotification;
      const FileName: stringvar Cancel: Boolean);
  end;

procedure Register;
begin

  NotifierIndex := GetOTAServices.AddNotifier(TjrIDENotifier.Create);

end;

procedure TjrIDENotifier.AfterCompile(Succeeded: Boolean);
begin

  GetMessageServices.AddTitleMessage('After Compile');
end;

procedure TjrIDENotifier.BeforeCompile(const Project: IOTAProject; var Cancel: Boolean);
begin

  GetMessageServices.AddTitleMessage('Before Compile');
end;

procedure TjrIDENotifier.FileNotification(NotifyCode: TOTAFileNotification;
  const FileName: stringvar Cancel: Boolean);
begin

  GetMessageServices.AddTitleMessage(Format('%s: %s',
    [GetEnumName(TypeInfo(TOTAFIleNotification), Ord(NotifyCode)), FileName]));
end;

procedure RemoveNotifier;
begin

  if (NotifierIndex <> -1then
    GetOTAServices.RemoveNotifier(NotifierIndex);
end;

initialization

finalization
  RemoveNotifier;

end.