Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Вниз

Двоичные файлы...   Найти похожие ветки 

 
Agent[007]   (2003-11-14 06:44) [0]

Как записать переменную в файл в двоичном виде?


 
Maxud   (2003-11-14 06:50) [1]


var i: integer;
S: TStream;
begin
i := 100;
S := TFileStream.Create("C:\test.bin", fmCreate);
S.WriteBuffer(i, SizeOf(Integer));
S.Free


 
Юрий Зотов   (2003-11-14 07:11) [2]

> Agent[007] © (14.11.03 06:44)

Не могли бы Вы ответить на противоположный вопрос - а как можно записать переменную в файл НЕ в двоичном виде?

Не знаю, кто как, а лично я этого делать не умею. А Вы, видимо, умеете, раз задаете такой вопрос. Поэтому и спрашиваю - тоже хочу научиться.


 
Agent[007]   (2003-11-14 08:25) [3]

> Юрий Зотов

var
f: TextFile;

begin
SomeVariable := "Hello, Text!";
AssignFile(f, "Text.txt");
Rewrite(f); // Для Записи, а для чтения Reset(f);
Write(f, SomeVariable);
CloseFile(f);
end;


 
Думкин   (2003-11-14 08:39) [4]


> [3] Agent[007] © (14.11.03 08:25)

По твоему, - это троичный файл?


 
Юрий Зотов   (2003-11-14 09:02) [5]

> Agent[007] © (14.11.03 08:25) [3]

Возможно, Вы не поверите, но Вы привели пример записи переменной именно в двоичном виде. Потому что в современных компьютерах НИКАКОГО другого вида хранения ЛЮБОЙ информации просто не существует.

А то, что программы-просмотрщики (или редакторы) умеют показывать так называемые "текстовые" (на самом деле - двоичные) файлы в символьном виде - так это заслуга уже самих этих программ.


 
FoxBox   (2003-11-14 09:31) [6]

var
f: File of BYTE;
SomeVariable: BYTE;
begin
SomeVariable := 123;
AssignFile(f, "ByteFile.txt");
Rewrite(f); // Для Записи, а для чтения Reset(f);
Write(f, SomeVariable);
CloseFile(f);
end;

вот запись числовых значений.
Можешь объявить f как file of YourRecord (только тип "объект" не используй)


 
alex_***   (2003-11-14 09:39) [7]

Да не прикалывайтесь вы над человеком... Все на первых парах что-то путали.


 
Thick   (2003-11-14 15:48) [8]

Если те делать нечево то переведи инфу в двоичный вид и записуй как текст.
Открываеш и видиш 01110000101010111
Только смысла в этом никакого не вижу


 
Agent[007]   (2003-11-14 20:30) [9]

Не... Мне интересно, как работать c File?

var f: file;
i: integer;
s: string;
begin
AssignFile(f, "c:\test.txt");
Reset(f);
BlockRead(f, i, SizeOf(integer));
BlockRead(f, s, SizeOf(integer));
ColseFile(f);
end;

Пишет: OutOfMemory... ПОЧЕМУ?


 
Германн   (2003-11-14 20:57) [10]

Ты бы еще написал SizeOf(Int64) :)))
Третьим параметром идет количество байт!


 
Германн   (2003-11-14 21:03) [11]

Пардон ступил. Предыдущий ответ не читать.
SetLength(s,SizeOf(Integer));
BlockRead(f,S[1],SizeOf(Integer));
Хотя для чего это всё - не понял.


 
WithOut Any ...   (2003-11-14 21:25) [12]

>Agent[007] © (14.11.03 20:30) [9]
если var f: file;
то необходимо
Reset(f, 1);
естественно, если не знаешь структуру


 
Agent[007]   (2003-11-15 14:09) [13]

Ой... Ошибся...

var f: file;
i: integer;
s: string;
begin
AssignFile(f, "c:\test.txt");
Reset(f);
BlockRead(f, i, SizeOf(integer));
BlockRead(f, s, SizeOf(string));
ColseFile(f);
end;


 
MBo   (2003-11-15 14:13) [14]

подозреваю, что в i - длина строки. тогда
SetLength(s,i);
BlockRead(f, s[1], i);


 
Anatoly Podgoretsky   (2003-11-15 15:25) [15]

MBo © (15.11.03 14:13) [14]
Которая кстати может быть нулевой


 
Agent[007]   (2003-11-15 21:41) [16]

нет... i не длина строки... Просто как читать инфу из нетипизированных файлов (разнотипную)?..


 
Юрий Зотов   (2003-11-17 02:02) [17]

Точно так же, как и из типизированных - теми же самыми Read или BlockRead. Но надо знать структуру файла - что в нем за чем следует и какую имеет длину. Если длина данного участка может быть переменной, ее часто пишут перед самим этим участком.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.072 c
3-89731
гость
2003-11-09 22:44
2003.11.27
SQL+Excel


14-90061
Zheks
2003-11-05 10:46
2003.11.27
Округление


6-90040
IGORYOK
2003-10-02 11:44
2003.11.27
клиент-серверную прогу активизировать на определённом порту


7-90141
LexaVV
2003-09-17 10:02
2003.11.27
MAC адрес, BIOS


1-89880
ramzi
2003-11-15 19:40
2003.11.27
TrimRight





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский