Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

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

OTA: wie fange ich speichern ab?

  Alt 22. Nov 2005, 10:14
  • Platform: Win32
    Version: Delphi 7 Enterprise
Hallo,

ich möchte eine *.bpl schreiben, die sich in das Abspeichern von Projekten einklingt.
Ich habe zwar folgenden Notifierer installiert, aber BeforeSave wird nie aufgerufen.
Delphi-Quellcode:
...
 TIdeNotifier = class(TNotifierObject, IOTANotifier, IOTAIDENotifier, IOTAActionServices)
  private
    FFileName: string;
  protected
    procedure AfterSave; overload;
    procedure BeforeSave; overload;
    procedure FileNotification(NotifyCode: TOTAFileNotification; const FileName: string; var Cancel: Boolean); overload;
...
Außerdem könnte ich den Vorgang nicht unterbrechen.

Es gibt ein IOTAActionServices interface, in dem folgende Funktionen definiert sind:
Delphi-Quellcode:
...
    function CloseFile(const FileName: string): Boolean;
    function OpenFile(const FileName: string): Boolean;
    function OpenProject(const ProjName: string; NewProjGroup: Boolean): Boolean;
    function ReloadFile(const FileName: string): Boolean;
    function SaveFile(const FileName: string): Boolean;
...
Wie klinke ich mich in die SaveFile ein?

Hintergrund:
Ich möchte verhindern, das unsere Delphi Programmierer *.pas / *.dfm Dateien auf C: speichern.

Jeder Quelltext (auch Testprogramme oder Beispiele) soll auf dem Netzwerk (LW B: oder M:) gespeichert werden.

Bei anderen Laufwerken sollte nur eine kleine Fehlermeldung kommen.

Wenn ich mich in obige Funktionen einklingen könnte wäre das ideal:
Ich habe den FileNamen und kann mit Result bestimmen ob es zulässig ist.
Man müsste nur im "Erfolgsfall" die alte SaveFile aufrufen. Fertig.

Delphi-Quellcode:
...
function SaveFile(const FileName: string): Boolean;
begin
  if POS(ExtractFileDrive(FileName), 'B|M|\\SERVER\FREIGABE\') > 0 then
  begin
    Result := OldSaveFile(FileName);
  end
  else
  begin
    ShowMessage('Fehlermeldung');
    Result := False; // nicht auf "richtigem" Laufwerk
  end;
end;
...
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat