Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi&OpenOffice-API - OLE-Variant zu String (https://www.delphipraxis.net/168449-delphi-openoffice-api-ole-variant-zu-string.html)

Cyberdine 22. Mai 2012 08:25

Delphi&OpenOffice-API - OLE-Variant zu String
 
Hallo zusammen,
habe folgendes Problem, wollte in eine Stringvariable Text aus einen OpenOffice Word Dokument einlesen
jedoch ist der Varianttyp OLE-Variant, der den Text von der Datei enthält.


var oo_tmp, oo_text, oo_cursor, tmp_text: OleVariant; << Braucht man für die OpenOffice API
str_tmp : string;
i_zeile, i_spalte : Integer;


oo_text.insertString(oo_cursor, 'API-Test', false); << insertString ist eine API-Funktion

tmp_text := oo_text.getstring; << getString auch, aber der Typ ist OLE-Variant
str_tmp := VarToStr(tmp_text); << Darum bekomm ich das hier nicht gebacken :/



PS: Wenn ich den Helm anklick, kommt immernoch nix wegen Quellcode.

Lemmy 22. Mai 2012 09:13

AW: Delphi&OpenOffice-API - OLE-Variant zu String
 
hi

Komisch, bei mir funktionierts. Dann kommt Delphi und /Delphi in eckigen Klammern

schon mal probiert:
Delphi-Quellcode:
str_tmp:=tmp_text;

Grüße

himitsu 22. Mai 2012 09:14

AW: Delphi&OpenOffice-API - OLE-Variant zu String
 
Zitat:

Darum bekomm ich das hier nicht gebacken :/
Warum nicht?
Was ist das Problem? (Fehlerbeschreibung)

Theoretisch sollte Delphi es bei
Delphi-Quellcode:
str_tmp := tmp_text;
sogar automatisch umwandeln. :gruebel:



PS: Wenn bei dir JavaScript/AJAX nicht läuft, dann schau unten mal in die "Forumregeln" und klick dort auf BB-Code.

[delphi]
dein Quellcode
[/delphi]

[DELPHI]
dein Quellcode
[/DELPHI]
// Groß oder Klein ist egal --- muß/sollte nur Beides gleich sein

[DELPHI]dein Quellcode[/DELPHI]
// einzeilig

[CODE]
anderer Code/Text
[/CODE]

[CODE="XML"]
anderer Code/Text
[/CODE]

Cyberdine 22. Mai 2012 13:22

AW: Delphi&OpenOffice-API - OLE-Variant zu String
 
So habs nun geschafft zu lösen, vielleicht nicht die eleganteste Lösung aber es funxt :D
Danke nochmal für die Antworten :-)

Delphi-Quellcode:
procedure TOLE_OpenOffice.ReplaceTextMark(const str_suchen, str_ersetzen: string; b_flag : Boolean);
var
   oo_text, oo_cursor : OleVariant; // Textobjekt für den Textund Cursorobjekt für die Position im Text
  str_tmp, str_tmp2 : string;  // 2 Temporäre Platzhalter

begin
   if isNullEmpty(OO_Document) then
      raise Exception.Create('TOLE_OpenOffice.ReplaceTextMark: Es ist kein Dokument geladen in dem eine Textmarke ersetzt werden könnte.');


  oo_text:=OO_Document.Text;   // Textinstanz zuweisen
  oo_cursor:=oo_text.createTextCursor; // Cursor im Text erstellen

  str_tmp := String(oo_text.GetString);  // Den Text der temporären StringVar zuweisen mittels
                                          // der Konvertierungsfunktion

  // Im Text suchen und ersetzen
  if b_flag = True then  // entweder alle
    str_tmp2 := AnsiReplaceStr(str_tmp, str_suchen, str_ersetzen) // oder einzeln
  else
   str_tmp2 := StringReplace(str_tmp, str_suchen, str_ersetzen, [rfIgnoreCase]);

  oo_cursor.GotoEnd(True);   // Dokument leeren
  oo_cursor.setString('X');  // Dokument leeren für
  oo_text.insertString(oo_cursor, str_tmp2, True); // den neuen Text

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:18 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