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
Tam bude záležet na tom driveru.
Pokud ten ovladač očekává ANSI a ne unicode parametr, pak zkus jen změnit volání na:
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.
[dcc32 Error] example_dll.pas(102): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar'
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?
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
@ Jan Fiala - jak jste na tom s programovaním přes lazarus?
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ělo.
S programovaním nemám problem.
By mně zajimalo, jak tam přidat knihovny co jsou v adresaři supp
V delphi mi to funguje. Bych to ale spiše chtěl v lazarusu.
V Lazaru je princip stejný.
Bud se knihovna prida do projektu nebo je treba pridat cestu do Library path.
Vzhledem k tomu, ze jde o hlavickovy soubor, ktery budete pouzivat, tak nejjednodussi cestou je nakopirovat jej do slozky se zdroji vaseho projektu. Pak mate jistotu, ze se pouzije ten konkretni
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ý.
Ty stringy jsou v Delphi takto uz nekolik verzi taky.
Podle vseho mu neslo o balicek, ale o unitu (hlavickovy soubor k DLL) a nastaveni cesty, aby ji Lazarus videl.
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 pohodě. Pokud je to jen unita, tak Projekt->Volby projektu, řádek Cesty a volba Jiné soubory jednotek (-FU). Lze to též přidat do fpc.cfg.