AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C# Klasse -> Delphi Klasse / OpenOffice
Thema durchsuchen
Ansicht
Themen-Optionen

C# Klasse -> Delphi Klasse / OpenOffice

Ein Thema von vsti · begonnen am 29. Aug 2006 · letzter Beitrag vom 4. Jul 2022
 
Benutzerbild von vsti
vsti

Registriert seit: 20. Sep 2004
Ort: Syke
70 Beiträge
 
Delphi 2005 Architect
 
#1

C# Klasse -> Delphi Klasse / OpenOffice

  Alt 29. Aug 2006, 08:25
hier mal der ursprüngliche Code:

Code:
internal class OOoCloseListener : XCloseListener {
  internal OOoTextDocument mTextDocument;
 
  public OOoCloseListener(OOoTextDocument pTextDocument) {
      mTextDocument = pTextDocument;
  } 
 
 
  public void notifyClosing(EventObject Source) { }
 
  public void queryClosing(EventObject Source, bool GetsOwnership) {
      mTextDocument.OnClosing(EventArgs.Empty);
  }
 
  public void disposing(EventObject Source) { }
}
und hier meine jetzige Version der Delphi Klasse (mach das zum ersten mal :/)

Delphi-Quellcode:
  OOoCloseListener = class(TObject)
  private
    mTextDocument: variant;
  public
    constructor Create(pTextDocument:variant);
    destructor Destroy; override;
    procedure notifyClosing(Source:variant);
    procedure queryClosing(Source:variant;GetsOwnership:boolean);
    procedure disposing(Source:variant);
  end;

implementation

procedure OOoCloseListener.disposing(Source:variant);
begin
//
end;

procedure OOoCloseListener.notifyClosing(Source:variant);
begin
//
end;

destructor OOoCloseListener.Destroy;
begin
  mTextDocument.free;
  inherited Destroy;
end;

constructor OOoCloseListener.Create(pTextDocument:variant);
begin
  inherited Create;
  mTextDocument := pTextDocument;
end;

procedure OOoCloseListener.queryClosing(Source:variant;GetsOwnership:boolean);
begin
// mTextDocument.OnClosing(EmptyParam);
  showmessage('es schließt sich jetzt');
end;
da es in delphi die Typen XCloseListener oder EventObject nicht gibt und um OpenOffice anzusprechen der Typ variant genutzt wird, habe ich auf gut Glück alles auf variant geändert

jetzt geht es wie folgt weiter
Delphi-Quellcode:
function TOOWriter.OpenDocument(const aFileName:string): boolean;
var
  fFileName: string;
  document: variant;
  mCloseListener: OOoCloseListener;
begin
  fFileName := ConvertToUrl(aFileName);
  Document := StarDesktop.LoadComponentFromURL(
                fFileName, '_blank', 0,
                VarArrayCreate([0, -1], varVariant));
  // Close-Listener initialisieren
  mCloseListener := OOoCloseListener.create(document);
  // Close-Listener hinzufügen
  document.addCloseListener(mCloseListener); //<-- hier kommt beim Kompilieren eine Fehlermeldung
  Result := not (VarIsEmpty(Document) or VarIsNull(Document));
end;
die Fehlermeldung lautet: E2281 Typ ist im Aufruf von Variant Dispatch nicht zulässig

bitte macht mich darauf aufmerksam wenn ich was übersehen habe, diese ganze OpenOffice Geschichte in Delphi ist echt Nerfenzerreißend
Thorsten
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz