Convert Variant to String
Re: Convert Variant to String
Genau so, wie es seit Jahren unter etlichen DelphiVersionen läuft, nur dort kann ich es direkt einem String´zuweisen unter Laz muss es ein Variant sein, weil es fpc sonst nicht frisst.
Aber ich versuch's ja zu umgehen via Clipboard ..
hde
Aber ich versuch's ja zu umgehen via Clipboard ..
hde
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Convert Variant to String
ich würde es so machen:hde hat geschrieben:danke @marcov,
nur .. wie kriege ich ein Variant oder OleVariant umgewandelt in Tvardata ohne "Invalid variant type cast" ??
hde
Code: Alles auswählen
function VariantToString(AValue: OleVariant): string;
begin
if TVarData(AValue).vType<>varNull then
result := VariantToAnsiString(TVarData(AValue))
else
result := '';
end;
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: Convert Variant to String
danke @gocher,
der Kompiler läuft fehlerfrei, aber es bleibt zur Laufteit beim "Invalid variant type cast"
Es geht um Daten aus einem ComObject. ich vermute einfach mal, dass laz/fpc anders als Delphi nicht die Daten zuweist, sondern das ganze ComObject.
danke für Eure Hilfe, aber ich hab's zunächst durch Übergabe per Clipboard umgangen. http://www.lazarusforum.de/viewtopic.ph ... 929#p54929" onclick="window.open(this.href);return false; Nicht sauber und nicht schön, aber es funktioniert.
hde
der Kompiler läuft fehlerfrei, aber es bleibt zur Laufteit beim "Invalid variant type cast"
Es geht um Daten aus einem ComObject. ich vermute einfach mal, dass laz/fpc anders als Delphi nicht die Daten zuweist, sondern das ganze ComObject.
danke für Eure Hilfe, aber ich hab's zunächst durch Übergabe per Clipboard umgangen. http://www.lazarusforum.de/viewtopic.ph ... 929#p54929" onclick="window.open(this.href);return false; Nicht sauber und nicht schön, aber es funktioniert.
hde
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Convert Variant to String
klar der Compiler weiß ja nicht was er erhälthde hat geschrieben:der Kompiler läuft fehlerfrei, aber es bleibt zur Laufteit beim "Invalid variant type cast"
das hört sich so an als würdest Du etwas falsches übergeben, hast Du vielleicht .Value am Ende vergessen, Delphi nimmt soweit ich es festgestellt habe den Default Property "Value" nämlich auch dann wenn er das Object nicht kennt.hde hat geschrieben:Es geht um Daten aus einem ComObject. ich vermute einfach mal, dass laz/fpc anders als Delphi nicht die Daten zuweist, sondern das ganze ComObject.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: Convert Variant to String
gute Idee. Der Kompiler läuft dann auch sauber durch und das Programm startet, aber .. "Method 'Value' is not supported by automation object"gocher hat geschrieben:das hört sich so an als würdest Du etwas falsches übergeben, hast Du vielleicht .Value am Ende vergessen, Delphi nimmt soweit ich es festgestellt habe den Default Property "Value" nämlich auch dann wenn er das Object nicht kennt.
Aber ich denke auch, dass laz/fpc nicht das erhält was erwartet wird, aber delphi erhält bei gleichem Ablauf das Richtige. Es gibt da ganz offensichtlich Unterschiede zwischen laz/fpc und delphi.
Muss ich wohl den Umweg über Cllipboard nehmen.
dank für eure Mühe. hde
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: Convert Variant to String
@HDE:
Ein Quelltext sagt mehr als tausend Worte. Ohne Quelltext kann man dir bei deinem Problem nicht helfen, das solltest du verstehen. Ich verfolge diesen Tread seit Tagen, kann aber nur den Kopf schütteln und klinke mich nun aus.
Ein Quelltext sagt mehr als tausend Worte. Ohne Quelltext kann man dir bei deinem Problem nicht helfen, das solltest du verstehen. Ich verfolge diesen Tread seit Tagen, kann aber nur den Kopf schütteln und klinke mich nun aus.
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
Re: Convert Variant to String
ich denke auch dass wir diesen Thead schließen sollten, das Problem hier scheint nicht zu lösen zu sein und es gibt ja einen anderen Weg an die Daten zu kommen.
@antrepolit,
ich denke nicht, dass der Quellcode helfen würde, kann ihn aber gerne reinstellen. Muss aber, damit er nachvollziehbar ist den relevanten Teil in ein Testprog übernehmen.
hde
@antrepolit,
ich denke nicht, dass der Quellcode helfen würde, kann ihn aber gerne reinstellen. Muss aber, damit er nachvollziehbar ist den relevanten Teil in ein Testprog übernehmen.
hde
- Dateianhänge
-
TestVariant.zip
- (126.43 KiB) 87-mal heruntergeladen
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Convert Variant to String
Da bin ich jetzt aber vom Stuhl gefallen als ich mir Dein Beispiel angesehen habe, Dein Problem hat überhaupt nichts mit Deinen Fragen zu tun!
In Deinem Beispiel OLE-Automatisierung benutzt Du in Einigen Zeilen das Selection Objekt und fütterst es mit Informationen und dann willst Du dieses Objekt in einen String wandeln
, das ist so als möchtest Du ein TEdit in einen String wandeln
! Es ist schon lange her aber so weit ich weiß wäre das Problem gleich zu lösen!
Beim TEdit liest Du die Eingabe über Property Text aus wie auch beim Selection Objekt
!
Beim nächsten Mal bitte bevor es zu solchen Problemen kommt eine kleine Kostprobe des Codes mitschicken, dann wären wir schneller am Ziel gewesen.
In Deinem Beispiel OLE-Automatisierung benutzt Du in Einigen Zeilen das Selection Objekt und fütterst es mit Informationen und dann willst Du dieses Objekt in einen String wandeln


Beim TEdit liest Du die Eingabe über Property Text aus wie auch beim Selection Objekt

Beim nächsten Mal bitte bevor es zu solchen Problemen kommt eine kleine Kostprobe des Codes mitschicken, dann wären wir schneller am Ziel gewesen.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: Convert Variant to String
Naja, es ist evtl. (nicht getestet) schon möglich, dass das unter Delphi geht. Denn Text ist das Default Property des Selection Object (Word).
Du scheinst dir ja ganz schön sicher zu sein gocher, so wie du mit hde sprichst.
In einem anderen Beispiel heisst es (für VBA)The Text property is the default property of the Selection object. Use this property to set or return the text in the current selection.
Ich denke auch, dass der Hund da begraben ist, bin aber nicht sicher, ob das unter Delphi nicht doch so geht.Some objects have default properties. For example, Range's default property is Value.
The following yields the same outcome.
Range("A1") = 1 and Range("A1").Value = 1
Du scheinst dir ja ganz schön sicher zu sein gocher, so wie du mit hde sprichst.
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Convert Variant to String
Bei OLE-Automatisierung, also mit createoleobject, also ohne das der Compiler weiß was das default property ist sollte man es immer mitschreiben, sicher Delphi ist da etwas toleranter wie ich schon zuvor geschrieben habe!
Ich mein das auch nicht böse, jedoch habe ich zuvor schon mal gefragt ob er nicht Value vergessen hat, weil das nun mal das default Property für Fields ist, das er nun mit dem Selection Objekt arbeitet welches keinen Feldinhalt hat, sondern nur den markierten/selektierten Text hat, gibt höchst wahrscheinlich kein Value Property!
Ich mein das auch nicht böse, jedoch habe ich zuvor schon mal gefragt ob er nicht Value vergessen hat, weil das nun mal das default Property für Fields ist, das er nun mit dem Selection Objekt arbeitet welches keinen Feldinhalt hat, sondern nur den markierten/selektierten Text hat, gibt höchst wahrscheinlich kein Value Property!
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: Convert Variant to String
Ich hab's schon mehrfach gesagt, schließen wir diesen Thread,er kostet uns allennur Zeit. Ich habe ja inzwischen einen funktionierenden Weg.
@gocher,
nur noch zur Klarstellung: Du irrst dich gewaltig!
Word gibt das selektierte Objekt als String zurück, das ist sicher.
Diesen String kann man in allen von mir getesteten Delphi-Versionen (von delphi5 bis XE) ohne jedes Problem einem String zuweisen und weiter bearbeiten. Das läuft in vielen Programmen seit Jahren. Und in diesem Zusammenhang gibt es kein Value.
Laz/fpc kann auch ohne Probleme einem solchen selektierten Objekt einen String(über Variant) zuweisen,
nur umgekehrt will er dem String/Variant das ganze Objekt zuweisen und das geht nur mit Variant und das kann laz/fpc nicht umwandeln.
Es gibt ganz offenbar in diesem Punkt einen großen Unterschied zwischen Delphi und Laz/fpc.
Laz/fpc ist nun mal ähnlich wie delphi aber kein Klon.
hde
@gocher,
nur noch zur Klarstellung: Du irrst dich gewaltig!
Word gibt das selektierte Objekt als String zurück, das ist sicher.
Diesen String kann man in allen von mir getesteten Delphi-Versionen (von delphi5 bis XE) ohne jedes Problem einem String zuweisen und weiter bearbeiten. Das läuft in vielen Programmen seit Jahren. Und in diesem Zusammenhang gibt es kein Value.
Laz/fpc kann auch ohne Probleme einem solchen selektierten Objekt einen String(über Variant) zuweisen,
nur umgekehrt will er dem String/Variant das ganze Objekt zuweisen und das geht nur mit Variant und das kann laz/fpc nicht umwandeln.
Es gibt ganz offenbar in diesem Punkt einen großen Unterschied zwischen Delphi und Laz/fpc.
Laz/fpc ist nun mal ähnlich wie delphi aber kein Klon.
hde
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: Convert Variant to String
Korrigierte Datei im Anhang. Um das Unicode-Problem musst du dich selber kümmern.
War das denn so schwer? http://msdn.microsoft.com/de-de/library ... 71%29.aspx
Und selbst das war bloß copy & paste.
Man sollte halt ab und an auch einmal darüber nachdenken, ob man den Code, den man copy-pasted denn überhaupt begriffen hat.

War das denn so schwer? http://msdn.microsoft.com/de-de/library ... 71%29.aspx
Und selbst das war bloß copy & paste.
Man sollte halt ab und an auch einmal darüber nachdenken, ob man den Code, den man copy-pasted denn überhaupt begriffen hat.

- Dateianhänge
-
- unit1.pas
- (2.03 KiB) 89-mal heruntergeladen
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
Re: Convert Variant to String
@Antrepolit,
danke für die Idee, den Link und "die Blumen", es gibt eben nicht nur schlaue sondern auch dumme
manchmal ist man auch blind, aber ich schließe mich arturx an:
nochmals dank für eure Hilfen .. hde
danke für die Idee, den Link und "die Blumen", es gibt eben nicht nur schlaue sondern auch dumme

manchmal ist man auch blind, aber ich schließe mich arturx an:
aber so funktioniert es nun wirklich? (schwere Geburt)arturx hat geschrieben:Es ist wie fast immer in Lazarus : wenn man es erstmal weiß, ist es ganz einfach....
Code: Alles auswählen
Field := myWord.Selection;
stringfield:=SysToUTF8(Field.&text);
ansifield:=stringfield;
- Dateianhänge
-
TestVariant.zip
- (126.67 KiB) 82-mal heruntergeladen
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: Convert Variant to String
Sorry, so war das nicht gemeint. Es ist halt nur ...die Antwort ist doch da. Warum sucht man dann nicht mal gezielt an der Quelle (MSDN)?hde hat geschrieben:@Antrepolit,
danke für die Idee, den Link und "die Blumen", es gibt eben nicht nur schlaue sondern auch dumme![]()
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
Re: Convert Variant to String
Sry, aber das Problem lag nicht bei MSDN, sondern bei den Varianten. Was fehlte war nur diese 5 Zeichen fehlten, sonst nichts.
egal, was soll's ..
Gruß und danke
hde
Code: Alles auswählen
.&text
egal, was soll's ..
Gruß und danke
hde