[Delhi] Binarny zapis do suborov

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod jmsoftware 1. 8. 2007 11:14

Ako sa to robi? Je to aj v GameMakerovi. Vlastne tam po jednom byte zapisujem hodnotu 0-256. Robi sa to asi cez streamy, ale ako?
jmsoftware
Kolemjdoucí

Odeslat příspěvekod JanFiala 1. 8. 2007 11:39

Vytvoris si TFileStream (na zaklade parametru otevres soubor nebo vytvoris novy), nastavis se na pozici a zapisujes bajty nebo bloky bajtu.
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Odeslat příspěvekod jmsoftware 1. 8. 2007 11:44

Mohol by si to trochu rozpisat? :D
Cital som tu ten navod na streamy, ale tamsa zapisovalo textovo, nie? Ako mam spravit aby som to tam zapisal binarne?
jmsoftware
Kolemjdoucí

Odeslat příspěvekod JanFiala 1. 8. 2007 12:12

TFileStream je binarni stream. Budes fungovat uplne stejne, jako kdyz tam zapisujes retezce, jen tam zapises bajty:

bajt := 12;
FileStream.Position := 0;
FileStream.WriteBuffer(bajt, SizeOf(Bajt));

Nebo si vytvoris pole bajtů, naplníš a zapíšeš najednou, opět pomocí WriteBuffer.
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Odeslat příspěvekod jmsoftware 1. 8. 2007 12:24

diky :D
jmsoftware
Kolemjdoucí

Odeslat příspěvekod jmsoftware 1. 8. 2007 12:46

A ako to mozem potom precitat? Mam tam toto:
Kód: Vybrat vše
x:= TFilestream.Create('aaa.txt',fmOpenRead);
x.Position := 0;
x.ReadBuffer(a, 1);
showmessage(inttostr(a));
x.Free;
jmsoftware
Kolemjdoucí

Odeslat příspěvekod JanFiala 1. 8. 2007 13:15

A je typu Byte?
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Odeslat příspěvekod jmsoftware 1. 8. 2007 13:24

prem. a je typu integer. skusim to s tym byte
jmsoftware
Kolemjdoucí

Odeslat příspěvekod jmsoftware 1. 8. 2007 13:26

Uz to facha :D
jmsoftware
Kolemjdoucí

Odeslat příspěvekod JM 1. 8. 2007 13:31

Poznámka: je lepší používat ReadBuf(Neco,SizeOf(Neco)), jak ti to nahoře napsal JaFi, namísto ReadBuf(Neco,pocet). Je to bezpečnější, člověk se tím vyhne nepříjemným - protože občas dost těžko odhalitelným - chybám. Totéž platí pro BlockRead, FillChar, Move atd.
JM
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků