Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Ake su hranice Delphi?

Zaujimalo by ma ake su obmedzenia v Delphi co sa tyka poli? Pracujem s premennou typu record ktora obsahuje dve polia o dlze 1..600 of Byte a este to cele je typu pole 1..25. Vychadza mi to na 30 000 poloziek.
Je to vela na pole v Delphi ale ani nie?

Předmět Autor Datum
Je to omezeno jen volnou pamětí. Záleží, pod jakýma Widlema program pojedee. Jestli ve Win 9x, tak s…
Rce 05.05.2006 23:57
Rce
Tak to som rad ze to tak funguje. Ten moj zaznam je potom takmer zanedbatelny.
Andrej 06.05.2006 00:09
Andrej
Veru zanedbateľný. Ale pamätám si časy, keď mi občas pod DOSom v Turbo Pascale vypísalo hlásenie Sta…
msx. 06.05.2006 00:26
msx.
Ano, to pole předávané proceduře (když bylo velké), dokázalo záhy vycucnout paměť v DOSu. Paměť DOSu…
Rce 06.05.2006 00:34
Rce
Ja viem, ale veď si predstav, že voláš procedúru a zásobník pretečie. To mi nešlo do hlavy. Takže by…
msx. 06.05.2006 00:38
msx.
Jj. Když jsem dělal nějaké rekursivní volání procedur, tak vycuclá paměť byla obvykle tím, že mi rek…
Rce 06.05.2006 00:46
Rce
Este sa chcem spytat ako si zobrazic iba cast z toho zaznamu v okne Watch List pri krokovani program…
Andrej 06.05.2006 01:24
Andrej
Teď jsem (v D7) zkoušel něco jako PoleZaznamov[n].KonkretnaPremenna kde n bylo 1, 2, 3, ... atd. Nor…
Rce 06.05.2006 01:38
Rce
On chce zobraziť celé pole, ale z neho vypísať len tú premennú.
msx. 06.05.2006 01:46
msx.
I PoleZaznamov.KonkretnaPremenna se mi zobrazí (obdobně, jak to mám v nějakém programu já, ale situa…
Rce 06.05.2006 02:07
Rce
Pole je urcite dostupne. Pokial v okne Watch List zadam PoleZaznamov.KonkretnaPremenna tak my to nap…
Andrej 06.05.2006 02:04
Andrej
Zadej jednoduše "PoleZaznamov". :-) //Edit: Já už tě asi chápu. Ale tak to nepůjde. Můžeš si tam zob…
Rce 06.05.2006 02:08
Rce
Ako som napisal vyssie PoleZaznamov je dost velka struktura kvoli tym poliam co obsahuje. PoleZazna…
Andrej 06.05.2006 02:26
Andrej
Bohužel, takto se nedá. :-( Lze zadat: PoleZaznamov, PoleZaznamov [n], nebo PoleZaznamov[n].Konkretn… poslední
Rce 06.05.2006 02:50
Rce

Je to omezeno jen volnou pamětí. Záleží, pod jakýma Widlema program pojedee. Jestli ve Win 9x, tak se všechny procesy dělí o jednu paměť. Ve Windowsích rodiny NT (XP) má každý proces k dispozici 2GB bez ohledu na skutečnou fyzickou velikost paměti - pozor pak na "náhodný" přístup k paměti, může vydatně stránkovat na disku a řádně spomalit program.
PS: 30 000 položek, zde = 30KB nestojí ani za řeč.:-)

Veru zanedbateľný. Ale pamätám si časy, keď mi občas pod DOSom v Turbo Pascale vypísalo hlásenie Stack overflow error. Základná kapacita pre zásobník bola tuším 16 kB a presiahnuť bolo nad ľudské sily. Mne sa to tuším podarilo tak, že som procedúre odovzdal paramater hodnotou a nie odkazom. Možno povieš, čo tam potom, ale problém bol v tom, že ten parameter bol pole. Trochu som sa tuším pri tom aj zapotil, kým som na to prišiel. Alebo to bolo v niečom inom? Nie som si istý, ale myslím, že to bolo takto.

Ano, to pole předávané proceduře (když bylo velké), dokázalo záhy vycucnout paměť v DOSu. Paměť DOSu byla omezena na 640 KB - tuším, že se pak k Pascalu daly ukořistit rutiny, co dovedly využívat EMS nebo XMS. Jinak velikost stacku šla nastavit v "nastavení" nebo příkazem kompileru - tuším {$M VelZásobníku, HeapMin, HeapMax} :-D;-)

Ja viem, ale veď si predstav, že voláš procedúru a zásobník pretečie. To mi nešlo do hlavy. Takže by som zbytočne riešil následok, keď bolo treba riešiť príčinu. Ale na druhej strane, človek pri programovaní natrafí na veci, že by sa sám čudoval.:))

Este sa chcem spytat ako si zobrazic iba cast z toho zaznamu v okne Watch List pri krokovani programu? Ten zaznam ako je popisany na zaciatku obsahuje este dalsie premenne ale uz nie polia. Takze potrebujem z toho celeho vidiet napr. PoleZaznamov.KonkretnaPremenna ale ked to takto zapisem do okna Watch List tak to nic nezobrazi a pokial tam dam PoleZaznamov[1].KonkretnaPremenna tak vidim iba ten prvy zaznam.

Teď jsem (v D7) zkoušel něco jako PoleZaznamov[n].KonkretnaPremenna kde n bylo 1, 2, 3, ... atd. Normálně mi to ukazovalo jednotlivé prvky pole, ne jen první. Zkus vypnout optimalizaci a prověřit, jestli je skutečně v daném místě programu dostupné celé pole a jestli je naplněné.

I PoleZaznamov.KonkretnaPremenna se mi zobrazí (obdobně, jak to mám v nějakém programu já, ale situace je stejná). Akorát se to nevejde do určeného místa, ale když se nad tím postojí myší, ukáže to hodně. Možná by bylo lepší použít pro to pole funkci Inspect. Nebo prostě postát chvilku myší nad zápisem té proměnné (lze i nad celým záznamem - nad slovo "PoleZaznamov"). U myši se hintem ukáže obsah. Ale musí být ten příkaz a ta proměnná přístupny s místa breakpointu s ohledem na platnost. Protože optimalizátor si s platností dělá co chce, je dobré na dobu ladění vypnout optimalizaci a nakonec jí nezapomenout opět zapnout!

Pole je urcite dostupne. Pokial v okne Watch List zadam PoleZaznamov.KonkretnaPremenna tak my to napise v tom Watch List vedla takto zadanej premennej Record, oject or class type required. Pokial do toho okna zadam iba PoleZaznamov tak to zobrazi vsetko co to obsahuje ale kedze sa tam pracuje s tymi poliamy ako je napisane na zaciatku je to tak velke ze v okne Watch List vidim iba prvy zaznam z toho pola zaznamov so vsetkymi jeho polozkami. Neviem co sa mysli pod

Zkus vypnout optimalizaci

.
Ja proste potrebujem vidiet iba PoleZaznamov[1..25].KonkretnaPremenna ale neviem ako to zadat.

Zadej jednoduše "PoleZaznamov". :-)
//Edit: Já už tě asi chápu. Ale tak to nepůjde. Můžeš si tam zobrazovat nadřazené struktury, ale ne jen kus podstruktur. Můžeš vidět celé PoleZaznamouv spolu s dalšíma prvkama, co to pole má. Nebo pak s indexem a pak s indexem a dalším prvkem. V zobrazování se postupuje totiž také hierarchicky a nejde část přeskočit.
//Edit2: Ale můžeš nacpat do Watches víc řádků, například:
PoleZaznamov[1].KonkretnaPremenna
PoleZaznamov[2].KonkretnaPremenna
PoleZaznamov[3].KonkretnaPremenna
...
...
a holt pozorovat to na více řádcích.

Ako som napisal vyssie PoleZaznamov je dost velka struktura kvoli tym poliam co obsahuje.

PoleZaznamov[1].KonkretnaPremenna
PoleZaznamov[2].KonkretnaPremenna
PoleZaznamov[3].KonkretnaPremenna

To napadlo i mna ze sa to da po jednom zazname:-) prave preto som chcel vediet ci sa neda PoleZaznamov[1..25].KonkretnaPremenna zobrazit naraz:?:

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