Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запись чисел в файл

4.4K
05 апреля 2006 года
frosty
53 / / 24.09.2004
Есть запись
type MyRecType = record
field1: string[10];
field2: byte;
end;

var
TMyRecType: array [1..n] of MyRecType {короч массив записей, может не совсем правильно описала}

есть файл
f: file of TMyRecType;

Так вот когда я делаю запись в файл (присоединенный, открытый, здесь ошибок и проблем нет), строковое поле он записывает, а числа ни в какую (каких бы типов они не были Integer,Word и т.д.). Пробовала просто записывать числовые переменные в файл, тоже не получается. Везде вместо числа записывает даже не пробел, а пустой символ!

В чем может быть проблема?
339
05 апреля 2006 года
verybadbug
619 / / 12.09.2005
интересно было бы исходный код глянуть.... )))

в общем виде это выглядит примерно так....

Код:
var
  F: File;
  MyRec: TMyRecType;
  I: Integer;
begin
  AssignFile(F, FileName);
  Rewrite(F, 1);
  for I := 1 to n do
    BlockWrite(F, MyRec, SizeOf(MyRecType));
  CloseFile(F);
end;


но советую делать всё это через потоки...
4.4K
06 апреля 2006 года
frosty
53 / / 24.09.2004
Но тогда мне придется менять код всех процедур! А это очень очень много! =( Есть какие-нить другие варианты? И объясни, пожалуйста, почему это не работает с нетипизированными файлами, а работает как ты показал с бинарными!

И через потоки это как?
4.4K
06 апреля 2006 года
frosty
53 / / 24.09.2004
Ну мне что никто не ответит?
10
06 апреля 2006 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by frosty
Везде вместо числа записывает даже не пробел, а пустой символ!


А если русскую смекалку применить? Открываем файл на просмотр в Far (через F3), нажимаем F4, чтобы переключиться в режим hex-дампа. На месте твоего числа будет код 00 (или 01, или что ты там присваивашь).

И в чем, собственно, проблема?

1.8K
06 апреля 2006 года
LastSoul
279 / / 28.12.2005
Если строки записывает, то почему бы числа в строки не переделать:
Var field2:String[3];

field2:=IntToStr(число); //целые числа
field2:=FloatToStr(число); //с плавающей точкой

4.4K
07 апреля 2006 года
frosty
53 / / 24.09.2004
Цитата:
Originally posted by LastSoul
Если строки записывает, то почему бы числа в строки не переделать:
Var field2:String[3];

field2:=IntToStr(число); //целые числа
field2:=FloatToStr(число); //с плавающей точкой



Это геморрой, тяжеловесный код получается! У меня половина циклов и параметров, передаваемых процедурам и функциям зависят от этих значений (в случае моей программы это структура собственной базы данных)...хотя видимо больше вариантов нет =(

4.4K
07 апреля 2006 года
frosty
53 / / 24.09.2004
Цитата:
Originally posted by verybadbug
интересно было бы исходный код глянуть.... )))

в общем виде это выглядит примерно так....

Код:
var
  F: File;
  MyRec: TMyRecType;
  I: Integer;
begin
  AssignFile(F, FileName);
  Rewrite(F, 1);
  for I := 1 to n do
    BlockWrite(F, MyRec, SizeOf(MyRecType));
  CloseFile(F);
end;


но советую делать всё это через потоки...



кстати так тоже ничерта не получается! я даже пробовала по одной переменной записывать таким образом в отдельной программе, результат такой же, то есть цифру он все равно не записывает! я просто в панике...может с настройками что-нить не так...хотя я слабо представляю, как это взаимосвязано! у меня Delphi 6 (просьба не смеяться над стариной ):}

4.4K
07 апреля 2006 года
frosty
53 / / 24.09.2004
Цитата:
Originally posted by Freeman
А если русскую смекалку применить? Открываем файл на просмотр в Far (через F3), нажимаем F4, чтобы переключиться в режим hex-дампа. На месте твоего числа будет код 00 (или 01, или что ты там присваивашь).

И в чем, собственно, проблема?



Проблема в том, что мне нужно эти данные считать той программой для создания различных циклов, структур и т.д.

Есть человеческий вариант? В Паскале почему-то все прекрасно записывается и читается, а в Делфи ну никак :-?

1.8K
07 апреля 2006 года
LastSoul
279 / / 28.12.2005
Писал на Delphi7 (мне кажется здесь разницы нет 6 или 7),
только здесь без массива, но сохраняет и читает все нормально...
339
07 апреля 2006 года
verybadbug
619 / / 12.09.2005
Цитата:
Originally posted by frosty
В Паскале почему-то все прекрасно записывается и читается, а в Делфи ну никак :-?



Нихрена не могу понять в чём твоя проблема...

Код:
//описываем запись
type
  TMyRecType = record
    field1: string[10];
    field2: byte;
  end;
...
//запись в файл
procedure TForm1.Button1Click(Sender: TObject);
var
  my: TMyRecType;
  F: File of TMyRecType;
begin
  my.field1 := Edit1.Text;
  my.field2 := Byte(StrToInt(Edit2.Text));

  AssignFile(F, 'C:\1.dat');
  Rewrite(F);
  Write(F, my);
  CloseFile(F);
end;
...
//чтение из файла
procedure TForm1.Button2Click(Sender: TObject);
var
  my: TMyRecType;
  F: File of TMyRecType;
begin
  AssignFile(F, 'C:\1.dat');
  Reset(F);
  Read(F, my);
  CloseFile(F);

  Edit1.Text := my.field1;
  Edit2.Text := IntToStr(my.field2);
end;
...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог