Anonymní profil Kartik – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Kartik – Programujte.comAnonymní profil Kartik – Programujte.com

 

Příspěvky odeslané z IP adresy 90.182.189.–

Kartik
Visual Basic › VBA a ukazatele
22. 9. 2017   #217945

Pak ale bude pevně daný návratový typ a kompilátor bude hlídat jestli je tento privátní typ viditelný i v aktuálním místě čemuž se snažím vyhnout. Další věc je že jednou může funkce vracet typ data, jindy data1 atd.

Kartik
Visual Basic › VBA a ukazatele
20. 9. 2017   #217877

To jo, ale musíš mít předem daný typ (nebo možná používat Variant), ten ukazatel dává mnohem větší volnost, takže funkce může vracet různá data na základě nějaké podmínky ve funkci. Pak je problém s předáváním typů, kdy se každý pomocný typ musí nastavit jako Public, pokud ho chci dostat mimo modul nebo třídu, takže se rychle vytvoří ohromné množství typů, které nemají skoro žádné globální využití, proto taky radši používam ukazatele k jejich skrytí a tam kde typ potřebuju si ho dam jen jako Private.

Třeba pokud je vstupní parametr ukazatel VarPtrArray(pole()) což je ukazatel na typ SAFEARRAY_VECTOR přes který VBA ukládá pole, tak to co píšu jde prohozením ukazatele na data pvData. Po tom prohození ze ve volané funkci zruší pole vstupní, ale zachová se ve funkci vytvořené i po jejím opuštění. Tak jestli nejde nějak podobně "oklamat" VBA i u běžných proměnných.

Kartik
Visual Basic › VBA a ukazatele
19. 9. 2017   #217869

Ahoj, potřeboval bych, aby měla funkce parametr, který bude ukazatel. Ve funkci se do nějakého datového typu zapíše co má a já chci, aby se šlo přes tento ukazatel na data dostat. Problém je, že samotná proměnná je deklarovaná ve funkci, takže jakmile kód funkci opustí, tak všechny privátní proměnné zruší. Existuje nějaký trik jak se tomu zrušení vyhnout, ale zároveň mít možnost proměnnou zrušit mimo proceduru, kde vznikla?

public sub XXX()

dim tData as data

fceA VarPtr(tData)

end sub

private function fceA (ptr as long)

dim tDataFce as data

...
...
...
'a teď bych potřeboval, aby ptr ukazoval na tDataFce a pokud VBA něco musí zrušit, 'tak aby zrušil tData

end function
Kartik
Matematika › výpočet průsečíku úseček s f…
25. 8. 2017   #217664

Dobrý den,

Jde mě o toto. Mám polygonu, jehož body mají souřadnice uložené jako double a chci testovat úsečky, jestli skrz něj prochází nebo ne. Je možné, že v rámci nepřesností může existovat úsečka, která se s polygonem kříží poblíž nějakého vrcholu tak, že průsečík nespočte? Průsečík by tedy ležel na vektorech (přímkách) obou blízkých stran polygonu, ale test jestli je na úsečkách by ho vyhodil. Lze to nějak šikovně ošetřit?

Kartik
C / C++ › převod řetězce na číslo bez…
16. 9. 2016   #212740

Ahoj,

Jde mě spíš o popis toho co funkce, která převádí sekvenci znaků na nějaký číselný datový typ dělá. Nebo jak by jste to napsali, kdyby tyto funkce nebyly. 

Kartik
Visual Basic › VBA EXCEL - Kreslení
12. 9. 2016   #212661

Min. částečně má pravdu, že každému lze odepsat, že to někde už je... Podle mě spíš pokud někoho štve dotaz, tak prostě neodpoví a je klid ne? Bez angličtiny se obejde, ale umět jí rozhodně není na škodu.

Kartik
Visual Basic › kód, který edituje/píše kód,…
12. 8. 2016   #212318

Nevíte jestli je něco takového ve VBA možné? Podle mě, se po spuštění kód zkompiluje a uloží se jako dll a tedy ačkoliv lze zapisovat do textu kódu v kompilátoru, tak ten už nemá na probíhající kód, který je v dll vliv a změna se projeví až po další kompilaci (spuštění)...

Kartik
C / C++ › otevření souboru který je vl…
12. 8. 2016   #212317

Dík všem za pomoc, podle toho už to nějak spácham.

Kartik
C / C++ › otevření souboru který je vl…
9. 8. 2016   #212281

Ještě jedna věc, právě když jsem Googloval, tak jsem našel, že jako admin lze vlastnictví přebrat. Proto jsem řešil ty admin práva.

Kartik
C / C++ › otevření souboru který je vl…
9. 8. 2016   #212280

#2 CZIvo
Chtěl bych tedy udělat to, co děla ten Unlocker - zavřít soubor s tím, že následně může aplikace, která ho vlastnila, spadnout... a následně tu aplikaci třeba znovu spustit. Jeden blbej program si nechává vlastnictví, i když k tomu nemá důvod. Nebo alespoň někdy se stává, že drží vlastnictví i po té, co je soubor v aplikaci zavřen (pomůže až ukončení aplikace). Když tedy následně spustím můj program, který dále pracuje s tímto souborem, tak je problém.

Kartik
C / C++ › otevření souboru který je vl…
1. 8. 2016   #212170

Ahoj,

chtěl bych se zeptat jestli je nějak možné z běžného uživatelského účtu zavřít soubor, který je vlastněný jiný procesem (aplikací), kterou spustil stejný uživatel.

A ještě jedna věc mě vrtá hlavou, když třeba mažu soubory v Total Commanderu, tak někdy píše, že to nejde a jestli to chci zkusit jako administrátor a pak to jde. Ale co jsem zkoušel... 

SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
BOOL b = AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup);
if (b)
 {
   if (!CheckTokenMembership(NULL, AdministratorsGroup, &b))
     b = FALSE;
   FreeSid(AdministratorsGroup);
 }

Podle toho admin práva nemam.

Kartik
Visual Basic › VBA pomoc s sčítáním a odčít…
16. 6. 2016   #211469

#4 JoDiK
Já vim že je, ale beru to jen jako příklad, ne jako pravidlo. Navíc pokud se to udělá obecně, tak to bude fungovat i na tu řadu ne?

Kartik
Visual Basic › opakované spuštění kódu padá
26. 5. 2016   #210950

Jak jsem psal, hodí to jen že nastala kritická chyba, ale udělá to log.

Sice to nesouvisí, ale 

If Mid$(CStr(1 / 2), 2, 1) = "," Then

tento kód občas hodí chybu overload, ale většinou proběhne v pohodě, čím to?

Kartik
Visual Basic › jak fungují řetězce (String)
24. 5. 2016   #210903

Hlavně proto, že když napíšu nějaké základní funkce, které nadále používám skoro ve všem co dělám, tak je mohu použít jak ve VBA tak v C, místo toho abych se pak se vším do C přepisoval a psal tedy vše 2x. O dalších výhodách jsem psal už výše.

Ano s řetězci až tak zásadní problém s výkonem není, ten je spíš až při práci s geometrií, jen jsem chtěl začít s něčím snadným.

Kartik
Visual Basic › jak fungují řetězce (String)
24. 5. 2016   #210894

#13 BDS
Ale já potřebuju ten BSTR dostat do VBA, ve kterém je to jediný typ pro řetězce. Problém není s operacemi s řetězcem. Třeba nevim proč, nebo jaký je rozdíl mezi řetězcem vytvořeným přes SysAllocString nebo pokud ho vytvořím binárně... následně SysFreeString funguje jen ty vytvořené přes funkci, otázka je tedy jak ten řetězec uvolňuje VBA.

Kartik
Visual Basic › funkce několikrát spuštěná z…
19. 5. 2016   #210792

Už to asi mám, ten test musí být jen v jednom vláknu a tam se jedna funkce dostane dřív a jiná/jiné dýl.

Kartik
Visual Basic › funkce několikrát spuštěná z…
19. 5. 2016   #210790

Ještě k těm vláknům, stejně nechápu jak přesně může fungovat kontrola třeba toho jestli jsou data zamčená, nebo nějaká kontrola toho jestli je funkce již spuštěna. Tedy v případě, že je ve více vláknech spuštěná funkce ve stejný čas a tedy postupně zároveň probíhají i jednotlivé bloky kódu. Takže vlákna dojdou zároveň třeba k

If spusteno=false then
  spusteno=true
  
  ...

  spusteno=false 
end if

Takže všechna spuštění funkce projdou podmínkou?

Kartik
Visual Basic › funkce několikrát spuštěná z…
19. 5. 2016   #210789

Nešlo mě už o původní dotaz, spíš jsem jen chtěl vědět jak přesně to probíhá, když vyprší ten timer a volá se jiná procedura. Mam představu, že system rozesílá zprávy a zase procedury zasílají zprávy na zpracovaní, ale já ve VBA se zprávama nic nedělám, nevím tedy jestli na pozadí nejsou nějaké odesílány, ten timer je posílá určitě.

Když jsem to testoval, tak běží funkce A dokud není zavolána funkce B přes timer, zároveň neběží.

Kartik
Visual Basic › opakované spuštění kódu padá
22. 4. 2016   #210122

Ahoj,

Chtěl bych se zeptat co všechno "přežije" po ukončení procedury do dalšího spuštění? Podle mě data deklarovaná mimo proceduru a pak to co je deklarováno jako static... tyto tedy na začátku resetuju, ale stejně kód hned při druhém spuštění padá, tak bych rád věděl jestli toho ve VBAčku nemůže přežít víc. Používám ješte dost win api funkce, tak jestli není už nic v čem by mohl být problém ve VBA, bude problém tam.

Pokud je problém tedy v těch funkcích mimo VBA, napadá někoho jak jednoduše zjistit co všechno se z procedury volalo a zůstalo to neukončeno respektive stále to běží po ukončení procedury?

Kartik
OS - Windows › regsrv32 - jak tento proces…
15. 4. 2016   #209980

Ještě dotaz, je tedy možné, že knihovna, kterou registruju, do registru nic nezapisuje, proste je to jen na té knihovně jestli a co zapíše?

Kartik
C / C++ › Zlozitost.. Na co si dat pozor
14. 4. 2016   #209972

Vybral sis C/C++ což už samo je složitej jazyk. Začneš tak, že si seženeš nějakou knížku, případně na netu najdeš nějakej seriál (třeba tady na webu), kde se prokoušeš od základů po to komplikovaný..., ale komplikovanosti se nikdy nevyhneš, ono tedy bude záležet co chceš vytvořit, ale těžko uděláš jednoduše složité věci.

Kartik
OS - Windows › regsrv32 - jak tento proces…
14. 4. 2016   #209971

Dík za odpověď, až přijdu z práce tak to ještě trochu víc testnu, ale pouštěl jsem to s admin. právama a psalo to, že soubor byl úspěšně registrován, nicméně v regedit jsem žádnou změnu nenašel.

Snažím se proto, aby byl VBAčkovej prográmek přenositelnej na jiné počítače, takže pácham proceduru, která kontroluje reference jestli má počítač knihovny k dispozici a jestli mají správnou verzi (zatim věřim na kompatibilitu, takže pokud je instalována vyšší verze, tak to neřešim). Potřebuju pokud je potřeba dostat knihovnu do referencí v projektu.

Kartik
OS - Windows › regsrv32 - jak tento proces…
14. 4. 2016   #209965

Zdravím,

Nejdřív jsem zkoušel hledat na netu, ale nějak jsem stále nezjistil jak toto přesně funguje. Pokud tedy přes příkazový řádek něco registruju, zahlásí to že knihovna byla úspěšně registrována, ale nějak nevidím žádnou změnu, nebo co to udělalo. Takže jak by to mělo fungovat v případě, že knihovna kterou registruju už je registrována...ve variantách je registrována stejná verze, ale s jinou cestou; je registrována starší verze; již je registrována novější verze (mají verze souboru vůbec nějaký vliv)? Nebo jestli pokud je knihovna používána nejde přeregistrovat (nebo odregistrovat a následně registrovat), případně se změny projeví až po restartu?

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý