Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi - popis struktury typu string...

Mam taku nezvyklu otazku... existuje niekde podrobny popis struktury typu string? A dalsia otazka... uchovava si niekde typ string dlzku retazca? To ze je nulou ukonceny, to som si vypisal... ak som zacal robit vypis o 4 bajty pred zaciatkom retazca v pamati, tak mi zobrazilo dlzku retazca... da sa to povazovat naozaj za dlzku retazca?

Předmět Autor Datum
Tiež to vypísalo (tú dĺžku) aj pri PChar, len o 5 byteov pred, čiže nie 4. A to sa mi zdá divné, leb…
msx. 22.02.2006 00:06
msx.
Struktura Stringu: pp ll s n pp - 2 byte počítadlo výskytů pro test platnosti. ll - 2 byte délka str…
Rce 22.02.2006 03:52
Rce
AnsiString může být přece delší než 64kB. Není to spíš takhle? -12 Longint with maximum string siz…
JM 22.02.2006 09:48
JM
S tou nulovou pozici to tak presne neni, v prvni bajt je stale obsazen velikosti (kompatibilita s Sh…
Jan Fiala 22.02.2006 10:19
Jan Fiala
Aby som to este upresnil: po zadani retazca "ahoj" som si dal vypisat obsah pamate typu string, s ty…
Intex 22.02.2006 11:20
Intex
To znamena, ze je to tak ako pise JM. BTW. s takymi vecami by si v programe podla mna pracovat nema…
MM.. 22.02.2006 11:56
MM..
Mňa to zaujalo kvôli tomu, že ak niekto bude chcieť uložiť fyzicky pamäť do súboru, tak ho SizeOf()…
msx. 22.02.2006 13:21
msx.
Ukladat fyzicky pamat s objektami tried :!::?: do suboru namiesto nejakej rozumnej struktury suboru…
MM.. 22.02.2006 13:25
MM..
To v Pascale. Jaj tak preto to nesedelo.:-D:-[
msx. 22.02.2006 13:27
msx.
S tymto urcite nepracujem, bol to iba akysi test. Moze to zavisiet od verzie prekladaca, alebo od je…
Intex 22.02.2006 13:43
Intex
Ja neviem kde je ten "String" definovany, ale v buducej verzii moze byt trebars ta velkost 64bitova,…
MM.. 22.02.2006 13:54
MM..
Vypis pamate tejto dynamickej premennej bol len akymsi testom pre mna a ma iba informativny charakte…
Intex 22.02.2006 13:59
Intex
Ok, v pohode, ja som len na to chcel upozornit ;-) Samozrejme skumaniu a testovaniu sa ziadne medze… poslední
MM.. 22.02.2006 14:02
MM..

Tiež to vypísalo (tú dĺžku) aj pri PChar, len o 5 byteov pred, čiže nie 4. A to sa mi zdá divné, lebo PChar predsa dĺžku neuchováva a ak je v String aj dĺžka, prečo potom SizeOf() hlási nepravdivú hodnotu (nezaráta 4 byte s dĺžkou reťazca (myslené pri String)?

Pred tým ako to dal Intex sem, sme to totiž riešili spolu cez ICQ.

To znamena, ze je to tak ako pise JM.

BTW. s takymi vecami by si v programe podla mna pracovat nemal (pouzi memberov danej triedy, alebo prislusne funkcie prekladaca, edit: alebo strukturu definovanu niekde v include subore prekladaca apod. - potom ta nezaujimaju absolutne offsety), ptz. take veci mozu (netvrdim ze musia) zavisiet od verzie prekladaca a dokonca aj od jeho nastaveni, to moze potom jeden kukat ze co ten program stvara ak niekto nieco zmeni v nastaveniach apod.

Mňa to zaujalo kvôli tomu, že ak niekto bude chcieť uložiť fyzicky pamäť do súboru, tak ho SizeOf() oklame a môže v najhoršom prípade zrútiť program pri spätnomn načitávaní. Ale tak ukladať pamäť asi hocikto nechce. Ide o to, že keď ukladám niečo do súboru, zvykol som použiť SizeOf(), ale ako vidím, tak s tým musím opatrne.

Ja neviem kde je ten "String" definovany, ale v buducej verzii moze byt trebars ta velkost 64bitova, alebo (teoreticky) ju mozu ovplyvnit nastavenia prekladaca napr. tykajuce sa single-byte / multi-byte (t.j. unicode) stringov apod.
Pisem len vseobecne, a teoreticky, netvrdim ze sa niekedy zmeni zrovna tato struktura, ale programy sa nepisu stylom preskumam si to vypisom pamati, ale pouzijem prislusne metody/funkcie (ktore ak sa ta struktura niekedy zmeni tak sa zmenia tiez) alebo ak prekladac ma niekde tu strukturu definovanu napr. nieco ako _string_struc a potom pouzit _string_struc.length, apod.
(V C/C++ su take veci bezne v *.h suboroch, aj s patricnymi #ifdef zavisiacimi od nastaveni prekladaca).

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