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.178.131.–

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

#3 Staon
Moc dík. Šlo mě o to jak by to mělo být napsané trochu na úrovni, aby to bylo rychlé. Tu jednoduchou konverzi znaků jsem právě napsal a bylo to hrozně pomalé, tak mě zajmalo jestli na to není třeba nějakej matematickej fígl. Šlo klasicky o řetězec v 10kové soustavě. 

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

Nevím jestli to nutně musí být nějaké řady, přijde mě to prostě jako sčítaní a odčítaní libovolných zlomků. Já bych to tedy převedl na stejného jmenovatele a pak to sečíst/odečíst, případně to na závěr pokrátit, což ale v zadání není... Snad jen s tím krácením a nalezením nejnižšího společného jmenovatele by mohl být trochu problém, který by nejspíš krom jiného vedl k hledání prvočísel menších než nějaká hodnota.

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

#17 BDS
Ano chápeš to správně. Jde mě o to jestli právě to VBA nějak rozliší co si alokovalo samo a to co přišlo odjinud, nebo jestli to zruší úplně stejně, nebo jak to udělat, aby se k tomu chovalo jako ke svému.

A vy co tomu rozumíte, tak jak jsem psal zrovna u těch řetězců je funkce SysAllocString, řetězec z té funkce se uvolňuje zas přes SysFreeString a podobně je spousta jiných funkcí, kde jedna vytváří a další ruší. Vrtá mě hlavou co zrovna v tomto, nebo jiných případech ta funkce udělá, že ta rušící funkce pozná, odkud jsou ta samá data, to znamená, že pokud nejsou vytvořena pomocí funkce, tak mazací funkce hlásí chybu.

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

#8 BDS
Neznám a jak mi to pomůže?

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

#7 Kit
Tak jednak se snažím přejít na C++, navíc ten kód je použitelnej jak ve VBA tak v C a mělo by to i běhat rychlejš než kdyby to bylo čistě ve VBA, alespoň ty místa kde to nejvíc drhne přepisuju do C. Další věc co mě na VBAčku štve, je že nejde kompilovat a zdrojový kód nejde zabezpečit, heslo je tam spíš jen tak na okrasu.

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

#5 Kit
Takže ještě pro jistotu, ať už tedy vytvořim ten řetězec kdekoliv mimo VBA, tak se o něj VBA postará?

Jo tohle jsem před časem řešil.. udělat na začátku dostatečně dlouhý řetězec a pak tam vepisovat ty kratší je o dost rychlejší. Teď právě kvůli operacím s řetězci dělam knihovnu v C++.

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

Jde mě o to VBAčko, kde se uvolňování děje aniž to mohu ovlivnit... Ať už to tedy funguje jak chce, tak hlavní je teď pro mě, jestli to správně uvolní i řetězec, který pochází z mojí dll knihovny, nebo jestli se o jeho zrušení musím postarat taky já. Jestli v tom VBAčko nevidí rozdíl odkud řetězec pochází, nebo jestli musí být nějak speciálně alokovaný...

Nevim jak přesně funguje Garbage Collector, ale tedy nejspíš sníží počet referencí a pokud je počet 0, tak to tu paměť až se mu zachce uvolní?

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

Chtěl bych vědět co se děje na pozadí VBA, když dojde třeba na přiřazení řetězce.

dim retezec as string
dim retezec2 as string
retezec="aaa"
retezec2="bbbbbb"
retezec = retezc2

Moje představa je, že se nejdřív uvolní paměť proměnné retezec, aby nezůstal navždy v paměti a pak se předá ukazatel na nový řetězec, nebo je to jinak? Řetězce ve VBA jsou typu BSTR, BSTR je ukazatel na data řetězce, která jsou (aspoň v mojí knihovně) uložené na hromadě přes new... Taky jestli se VBA při rušení řetězce postará a smazaní toho co bylo alokováno přes new, což jsou všechny data toho BSTR (prefix, data, terminator)?

Kartik
Visual Basic › struktura kolekce
16. 5. 2016   #210708

Už to asi mam, dereferencovat pointer pres copymemory a pak přes objekt volat funkce.

Kartik
Visual Basic › struktura kolekce
16. 5. 2016   #210707

A když mam pouze ukazatel na kolekci, je nějaká možnost jak zavolat členskou funkci, kterou prvek např. přidam?

Kartik
Visual Basic › struktura kolekce
15. 5. 2016   #210686

Snažil jsem se googlovat, ale marně, všude jen jak se kolekce používají, ale nikdy jak to funguje ve VBA. Potřeboval bych to nejlépe rozepsané jako je to na http://bytecomb.com/vba-internals-getting-pointers/ , tam je popsané jak ve skutečnosti funguje např. pole, že je to struktura SAFEARRAY, nebo řetězce, které se ukládají jako BSTR. No a já bych potřeboval jak jsou uložená data kolekce.

Zatím jsem přišel jen na to, že ukazatel na kolekci + 16 je Long size.

dim size as long
Copymemory size, byval ObjPtr(kolekce) + 16, 4
Kartik
Visual Basic › funkce několikrát spuštěná z…
15. 5. 2016   #210685

Ten timer po té co vyprší hodí zprávu, že požadovaný čas vypršel a spustí se funkce... a kdy tedy proběhne tato funkce, když právě probíhá ve vlákně jiný kód? Podle toho jak na pohled průběh vypadá a jestli je to v jednom vlákně, tak to možná po vypršení času kód zastaví, proběhne ta funkce a pak pokračuje původní kód. Pokud by to bylo, tak je problém podobný, protože uprostřed funkce může spustit tu samou funkci.

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

Díky.

Napadá mě, že by to možná šlo taky řešit pomocí vytváření kopií proměnných, takže by každá funkce měla svoje a mohli by pak běžet zároveň bez omezení.

A otázka mimo, i když to možná souvisí. Jak funguje winapi funkce SetTimer, jestli si vytváří svoje vlákno, nebo jak to funguje, když se po vypršení limitu volá nějaká funkce zatímco jiný kód již běží. 

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

Mam ve funkci jak lokální proměnné uvnitř funkce, tak sdílené v rámci modulu (ty používá několik funkcí) - ty má také každá funkce vlastní? 

Takže spíš než že by se dělaly funkce, které je možné spustit několikrát zároveň, tak se to řeší až při jejich použití, kdy pokud je funkce už spuštěna, tak se znova nevolá, dokud neskončí to první volání? 

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

Jako na potvoru to teď nechce spadnout :) Hned jak se to povede to sem hodim, ale myslím že to je obecná chyba typu nastala kritická chyba program bude ukončen. Program nad kterým to VBAčko běží, ale nejspíš dělá ke každém pádu celkem dlouhý log s výpisem paměti a spoustou dalších věcí... ze kterých já stejně prd poznam:(5

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

Ahoj,

Předpokládám, že je teoreticky možné možné, že i funkce z VBA může být spuštěna v jeden moment několikrát v různých vláknech, ale jde mě o to jak to funguje obecně. Nevím jak je to určitě, ale tipnul bych, že v paměti je funkce jen jedna a tedy případné několikanásobné spuštění bude používat stejné proměnné ve funkci, což povede k blbosti, nebo rovnou chybě v přístupu. Rád bych tedy věděl jak se tento problém řeší, aby funkce šla bezpečně použít, i když je volána několikrát ve stejný čas.

 

 

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