Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi ascii a unicode

Zdravím
Pokračovaní.
https://pc.poradna.net/questions/3128473-tredia-pci-express-cards

https://www.tedia.cz/download/daq-pci.html

Je tam daq01_284_examples.zip

Příklady použití pro různé programovací jazyky
C#, C++ Builder, Delphi, Excel VBA, Perl, Visual Basic

Jde mi jen o example_digital

Je tam zkompilovan exe pro delphi.
Normálně ho spustím, a vidím, jak se ke kartě připojí.

Když však načtu zdrojak a spustím, vyskočí mi hláska, že kartu nemůže najít.

Přimo ve FormCreate je


result_:=Td_Init_Driver(@Ihandle,PChar('EXAM_DIGITAL'));
  if result_<>0 then
  begin
    Application.MessageBox('Nenalezené žádná aktivní zařízení s názvem EXAM_DIGITAL, použijte administrační program [admin.exe].','Chyba!',MB_ICONERROR);
    resolve_error(result_);
    Application.Terminate;
  end;

Dlouho mi vrtalo v hlavě proč, a nakonec se asi rozsvítilo.
Zdrojak byl psaný už dávno a problem bude v tom řetězcí s názvem karty EXAM_DIGITAL.
ascii a unicode
Pomuže někdo?
https://pastebin.com/cwpdijHp

Předmět Autor Datum
Tam bude záležet na tom driveru. result_:=Td_Init_Driver(@Ihandle,PChar('EXAM_DIGITAL')); Pokud te…
Jan Fiala 24.02.2022 10:03
Jan Fiala
[dcc32 Error] example_dll.pas(102): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar'
BigSandy 24.02.2022 10:31
BigSandy
Pak musíš upravit i hlavickovy soubor, ktery ma predavat do DLL parametry jako ANSI a predava je jak…
Jan Fiala 24.02.2022 10:59
Jan Fiala
[d-kuj.gif] Pomohlo to popřepisovat, děkují :-) Myslite ovladače daq-pci-pcie_3.18.00.zip Jsem zko…
BigSandy 24.02.2022 13:58
BigSandy
@ Jan Fiala - jak jste na tom s programovaním přes lazarus?
BigSandy 25.02.2022 06:14
BigSandy
Nejsem, ale ty jazyky jsou téměř stejné. S problémem s prostředím neporadím, ale s kódem by to jít m…
Jan Fiala 25.02.2022 06:20
Jan Fiala
S programovaním nemám problem. By mně zajimalo, jak tam přidat knihovny co jsou v adresaři supp V de…
BigSandy 25.02.2022 06:37
BigSandy
V Lazaru je princip stejný. Bud se knihovna prida do projektu nebo je treba pridat cestu do Library…
Jan Fiala 25.02.2022 07:31
Jan Fiala
V Lazaru se ti to připojí samo. Lazarus nepodporuje dynamické připojování balíčků, musíš mít všechny…
Rce 25.02.2022 22:57
Rce
Ty stringy jsou v Delphi takto uz nekolik verzi taky. Podle vseho mu neslo o balicek, ale o unitu (h…
Jan Fiala 26.02.2022 06:05
Jan Fiala
No teď nová verze Lazaru 2.2.0 má poněkud problémy něco najít, ale vlastní překlad přes fpc je v poh… poslední
Rce 26.02.2022 22:17
Rce

Tam bude záležet na tom driveru.

result_:=Td_Init_Driver(@Ihandle,PChar('EXAM_DIGITAL'));

Pokud ten ovladač očekává ANSI a ne unicode parametr, pak zkus jen změnit volání na:

result_:=Td_Init_Driver(@Ihandle,PAnsiChar('EXAM_DIGITAL'));

další možností je zavolat unicode verzi toho Init_Driver, pokud existuje - treba stahnout aktuální ovladac. Tam bys pak musel v hlavičkovém souboru pro driver zmenit volani funkce Td_Init_Driver na jeji unicode formu

Podle všeho používáš ten multikartový ovladač z roku 2014.

Pak musíš upravit i hlavickovy soubor, ktery ma predavat do DLL parametry jako ANSI a predava je jako UNICODE

Soubor tedia_daq01h.pas
Zkus vsechno PChar nahradit za PAnsiChar

Jako další možnost je oprášit starou verzi Delphi a pokud používáte k něčemu novou, tak si napsat můstek, přes který budete komunikovat.
Co nové aktuální ovladače z 2020, jsou k nim taky Delphi příklady a předpokládám, že ty už budou korektně pracovat s UNICODE. Ty pro tu tvou kartu nejsou?

[d-kuj.gif]

Pomohlo to popřepisovat, děkují :-)
Myslite ovladače daq-pci-pcie_3.18.00.zip

Jsem zkoušel a hlasilo to chybu s podpisem.
To bude tím že mám uplně nove win7 bez jakekoliv aktualizace.Zatím nemám čas řešit.
Učelem těch win7 je naučit se to ovladat a pak to asi pojede zase na win xp.
Valim koupit com. konektor a testovat zda to funguje :-)

V Lazaru se ti to připojí samo. Lazarus nepodporuje dynamické připojování balíčků, musíš mít všechny potřebné balíčky zakompilované v samotném systému Lazarus. Musíš překompilovat s tím Lazarus a on pak ví, kde to najde.

// Edit: V Lazaru máš možností zpracování stringu daleko víc. Tam je UnicodeString, UTF8 string, String (codepage) a zajistí automatický převod stringu. Unicode je dvoubajtový, ASCII je jednobajtový a UTF8 různě bajtový, až 3 bajtový.

Zpět do poradny Odpovědět na původní otázku Nahoru