Forum Delphi.cz

Databáze => Firebird a Interbase => Téma založeno: pepak 27-06-2012, 19:00:05

Název: BLOB na string
Přispěvatel: pepak 27-06-2012, 19:00:05
Moc by mě zajímalo, jestli někdo umí v Delphi napsat UDF, které by:

1) na vstupu přijímalo BLOB a beze změny (nanejvýš s oseknutím délky) ho vyplivnulo jako VARCHAR(100), za podmínky, že
2) jedno a to samé DLL musí fungovat v každé 32bitové verzi Firebirdu od 1.5 výše, a
3) jedno a to samé DLL musí fungovat v každé 64bitové verzi Firebirdu od 1.5 výše.

Já umím splnit maximálně dvě tyto podmínky :-(
Název: Re:BLOB na string
Přispěvatel: pepak 27-06-2012, 19:15:39
Ještě doplním - kdyby to šlo úplně bez UDF, tak je to samozřejmě ještě lepší řešení. Ale podle mě to na takhle velkém rozpětí verzí FB nejde (tradiční CAST AS nebo SUBSTRING FROM jsou závislé na správně definovaných kódových stránkách, což je samozřejmě v zamýšlených užitích utopií očekávat).
Název: Re:BLOB na string
Přispěvatel: Radek Červinka 29-06-2012, 09:29:45
2) jedno a to samé DLL musí fungovat v každé 32bitové verzi Firebirdu od 1.5 výše, a
3) jedno a to samé DLL musí fungovat v každé 64bitové verzi Firebirdu od 1.5 výše.

Podle mne se 2 a 3 vzájemně vylučuje. 32bit program musí mít 32bit DLL a 64bit jen 64bit DLL. Nelze to kombinovat - omezení Windows. Jediný kdo to prý porušuje je Internet Explorer 64 bit, který prý nějak dokáže pracovat s 32bit DLL rozšířeními (za pomocí nějaké černé magie) - to jsem kdesi četl, jestli je to pravda nevím.
Název: Re:BLOB na string
Přispěvatel: < z > 29-06-2012, 15:25:27
Opera ma "Out Of Process Plugins", tj. v 64bit verzi lze spoustet 32bit pluginy,
takze to asi mozne je ... jak, to ale nikdo nevi ;)
Název: Re:BLOB na string
Přispěvatel: Radek Červinka 29-06-2012, 15:40:37
Tipl bych, ze tam ma druhy process (32bit, ten zavede DLL) se kterym nejak komunikuje. Což ale v případě Pepáka a jeho UDF moc nepřichází v úvahu.
Název: Re:BLOB na string
Přispěvatel: pepak 29-06-2012, 20:36:07
2) jedno a to samé DLL musí fungovat v každé 32bitové verzi Firebirdu od 1.5 výše, a
3) jedno a to samé DLL musí fungovat v každé 64bitové verzi Firebirdu od 1.5 výše.

Podle mne se 2 a 3 vzájemně vylučuje.
Samozřejmě. Proto jsem to napsal jako dva body, které se týkají dvou samostatných DLL. Kdybych chtěl jedno společné DLL pro 32 i 64 bitů, tak to napíšu do jednoho bodu.