Datový typ Int64

Toto je hlavní technické fórum pro diskusi o problémech při vytváření PROMOTIC aplikací a jejich řešení.

Datový typ Int64

Postby albiman » Tue 24. Sep 2013 8:34:39

Dobrý den,
rád bych se přeptal zda je k dispozici datový typ Int64 (8 bytový integer), používáme ho v mssql databázi pro generování jedinečných Id.
Jako nejbližší varianta se zdá použití datového typu double, ale má své komplikace a omezení.

Děkuji.
albiman
 
Posts: 26
Joined: Tue 12. Feb 2013 21:51:12

Re: Datový typ Int64

Postby Tomáš Bräuer » Tue 24. Sep 2013 8:47:41

Dobrý den,
bohužel VBScript v PROMOTIC pracuje pouze s Int32 a JavaScript pracuje defacto jenom s double (u bitových operací si interně převede asi také na Int32). Takže nelze.

Čistě teoreticky, ale pro vás asi bezpředmětné: Jediné co lze je, že VARIANT, který je skutečným typem užitým ve skriptovém rozhraní (u uživatelských metod nebo u našich metod, kde je v dokumentaci napsáno Variant) umí držet 64bit, neumí ho však zpracovat skriptovací jazyky. Takže by mohla být metoda v PmDll nebo PmActiveX, která by vrátila Int64. Do této hodnoty se nesmí VBScript podívat jinak nastane chyba, ale šlo by tuto hodnotu předat jako parametr při volání jiné metody. Takže proměnná vytvořená pomocí Dim vlastně může tento typ držet a předávat dále, ale nesmí se s ní dělat žádná matematická operace apod. Jako černou skříňku z převzít z jedné metody a předat později do metody jiné. V praxi ale asi nemáte ani tu metodu, která by ten Int64 vyrobila a také tu, která by ji přijala a zpracovala.
Tomáš Bräuer
Administrátor
 
Posts: 153
Joined: Thu 13. Dec 2012 9:13:13

Re: Datový typ Int64

Postby albiman » Wed 25. Sep 2013 12:23:55

Hmm a v případě načtení Variant typu do stringu bude tam celé číslo jako řetězec, bude oříznuté nebo bude chyba konverze?
Budu muset nějak zkusit, ideální by bylo to alespoň konvertovat do Hexa stringu nebo bytového pole, ale asi funkce TransformValue toto asi umět nebude...
albiman
 
Posts: 26
Joined: Tue 12. Feb 2013 21:51:12

Re: Datový typ Int64

Postby Tomáš Bräuer » Thu 26. Sep 2013 9:27:28

Nebude. Žádná funkce v PROMOTICu dneska, neumí pracovat, zkonvertovat Int64 hodnotu. Někdo by musel Int64 poskytnout (vyčíst), což PROMOTIC dnes být nemůže a někdo ji musí zpracovat, což dnes také PROMOTIC být nemůže.
Existuje možnost v budoucnu v případě potřeby, pokud by to bylo proveditelné, nechat např funkci Pm.TransformValue nebo jiné provést konverzi z Int64 do dvou Int32 nebo do pole 64 bool hodnot.
Tomáš Bräuer
Administrátor
 
Posts: 153
Joined: Thu 13. Dec 2012 9:13:13


Return to Nevím jak...

Who is online

Users browsing this forum: No registered users and 5 guests