Convert Variant to String
Convert Variant to String
Hallo,
hat Jemand von Euch eine Idee, wie ich ein Variant oder OleVariant in String convertieren kann?
Grund: Ich übernehme selektierte Texte aus MS-Word, was offenbar nur in Variant oder OleVariant auch gut funktioniert, muss das Zeug aber irgendwie bearbeiten bevor ich es wieder einfüge.
wäre nett, wenn Jemand eine Idee hätte.
Gruß hde
hat Jemand von Euch eine Idee, wie ich ein Variant oder OleVariant in String convertieren kann?
Grund: Ich übernehme selektierte Texte aus MS-Word, was offenbar nur in Variant oder OleVariant auch gut funktioniert, muss das Zeug aber irgendwie bearbeiten bevor ich es wieder einfüge.
wäre nett, wenn Jemand eine Idee hätte.
Gruß hde
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Convert Variant to String
Code: Alles auswählen
stringvariable:= variantwert;
Re: Convert Variant to String
Sorry mse,
alle Konvertierungs- und Zuweisungsversuche scheitern bisher an "Invalid Variant Cast" o.ä.
Gruß hde
alle Konvertierungs- und Zuweisungsversuche scheitern bisher an "Invalid Variant Cast" o.ä.
Gruß hde
Re: Convert Variant to String
Bis du sicher, dass die Variante etwas gültiges enthält?
Check doch mal mit VarType(v) was da drin ist.
Check doch mal mit VarType(v) was da drin ist.
Re: Convert Variant to String
kann der fpc 2.6.0 das? Ich krieg nur .. Eror: Identifier not found "VarType"
oder was fehlt/mach ich falsch?
hde
oder was fehlt/mach ich falsch?
hde
Re: Convert Variant to String
Ist seit etwa 7 Jahren in der unit "variants".hde hat geschrieben:kann der fpc 2.6.0 das? Ich krieg nur .. Eror: Identifier not found "VarType"
Hirn eingeschaltet?oder was fehlt/mach ich falsch?

Re: Convert Variant to String
sorry @theo, und danke ..
ich hatte überlegt welche unit fehlt, aber aln Lazarus versuche ich mich erst seit kürzerem.
ja, es ist was drin und z war VarTyoe 9
hde
ich hatte überlegt welche unit fehlt, aber aln Lazarus versuche ich mich erst seit kürzerem.
ja, es ist was drin und z war VarTyoe 9
hde
Re: Convert Variant to String
Das wär dann wohl VarDispatch.
http://docs.embarcadero.com/products/ra ... patch.html" onclick="window.open(this.href);return false;
http://docs.embarcadero.com/products/ra ... rType.html" onclick="window.open(this.href);return false;
Da kenne ich mich aber auch nicht mit aus.
http://docs.embarcadero.com/products/ra ... patch.html" onclick="window.open(this.href);return false;
http://docs.embarcadero.com/products/ra ... rType.html" onclick="window.open(this.href);return false;
Da kenne ich mich aber auch nicht mit aus.
-
- 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 angehen, so in der Art habe ich es zumindest in meiner ADO Komponente im Einsatz.
Code: Alles auswählen
type TDataType = (dtEmpty, dtTinyInt, dtSmallInt, dtInteger, dtBigInt, dtUnsignedTinyInt,
dtUnsignedSmallInt, dtUnsignedInt, dtUnsignedBigInt, dtSingle, dtDouble,
dtCurrency, dtDecimal, dtNumeric, dtBoolean, dtError, dtUserDefined,
dtVariant, dtIDispatch, dtIUnknown, dtGUID, dtDate, dtDBDate, dtDBTime,
dtDBTimeStamp, dtBSTR, dtChar, dtVarChar, dtLongVarChar, dtWChar,
dtVarWChar, dtLongVarWChar, dtBinary, dtVarBinary, dtLongVarBinary,
dtChapter, dtFileTime, dtDBFileTime, dtPropVariant, dtVarNumeric, dtArray);
const DataTypeValues: array[TDataType] of TOleEnum = (
adEmpty, adTinyInt, adSmallInt, adInteger, adBigInt, adUnsignedTinyInt,
adUnsignedSmallInt, adUnsignedInt, adUnsignedBigInt, adSingle, adDouble,
adCurrency, adDecimal, adNumeric, adBoolean, adError, adUserDefined,
adVariant, adIDispatch, adIUnknown, adGUID, adDate, adDBDate, adDBTime,
adDBTimeStamp, adBSTR, adChar, adVarChar, adLongVarChar, adWChar,
adVarWChar, adLongVarWChar, adBinary, adVarBinary, adLongVarBinary,
adChapter, adFileTime, adDBFileTime, adPropVariant, adVarNumeric, adArray);
function OleEnumToOrd(OleEnumArray: array of TOleEnum; Value: TOleEnum): Integer;
begin
for Result := Low(OleEnumArray) to High(OleEnumArray) do
if Value = OleEnumArray[Result] then Exit;
Result := High(OleEnumArray) + 1;
end;
function VariantToString(AValue: OleVariant): string;
begin
result := '';
try
if TVarData(AValue).vType<>varNull then
case TDataType(OleEnumToOrd(DataTypeValues,TVarData(AValue).vType)); of
dtBoolean:
if AValue then
result := 'true'
else
result := 'false';
dtDate, dtDBDate, dtDBTime, dtDBTimeStamp:
result := FormatDateTime('dd"."mm"."yyyy hh":"nn":"ss', AValue);
dtTinyInt, dtSmallInt, dtInteger, dtBigInt, dtUnsignedTinyInt, dtUnsignedSmallInt, dtUnsignedInt, dtUnsignedBigInt:
result := VarToWideStrDef(AValue, '0');
dtSingle, dtDouble, dtCurrency, dtDecimal, dtNumeric:
result := FormatFloat('###0.##', AValue);
else
result := VarToWideStrDef(AValue, '');
end;
except
WriteLog(etError, 'shit happens :shock: ');
end;
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,
ich werde es ausprobieren, muss nur mal suchen aus welcher unit TOleEnum stammt.
Gruß hde
ich werde es ausprobieren, muss nur mal suchen aus welcher unit TOleEnum stammt.
Gruß 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
Unit ActiveX;
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
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Convert Variant to String
Variantto*string gibst schon predefinieert in varutils?
function VariantToWideString(const VargSrc : TVarData) : WideString;
function VariantToAnsiString(const VargSrc : TVarData) : AnsiString;
function VariantToShortString(const VargSrc : TVarData) : ShortString;
function VariantToWideString(const VargSrc : TVarData) : WideString;
function VariantToAnsiString(const VargSrc : TVarData) : AnsiString;
function VariantToShortString(const VargSrc : TVarData) : ShortString;
Re: Convert Variant to String
danke @marcov,
nur .. wie kriege ich ein Variant oder OleVariant umgewandelt in Tvardata ohne "Invalid variant type cast" ??
hde
nur .. wie kriege ich ein Variant oder OleVariant umgewandelt in Tvardata ohne "Invalid variant type cast" ??
hde
Re: Convert Variant to String
Vllt wäre es hilfreich, wenn du mal zeigen würdest wie du zu deiner Variante kommst, die dann VarDispatch enthält.