Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2012, 14:34   #1
Sullla
Пользователь
 
Регистрация: 27.05.2011
Сообщений: 24
По умолчанию Чтение бинарного файла. Где ошибка?

Завис на элементарной ошибке, нужен взгляд со стороны
Код:
type
  TOrderShortInfo= record
    index: string[3]; 
    date: string[10];  
    name: string[128];  
  end;
.............
procedure TfrmSendOrder.ReadClick(Sender: TObject);
var
  xptFile: file of TOrderShortInfo;
  decoded_array:array of TOrderShortInfo;
  i: integer;
begin
  AssignFile(xptFile,ExtractFilePath(Application.ExeName)+'Export\test.xpr');
  Reset(xptFile);
  SetLength(decoded_array,FileSize(xptFile));
  try
    i:=1;
    while not EOF(xptFile) do
    begin
      Read(xptFile, decoded_array[i]);
      inc(i);
    end;
  finally
    CloseFile(xptFile);
  end;
end;
В строке Read(xptFile, decoded_array[i]) выдает "Missing operator or semicolor"...
Sullla вне форума Ответить с цитированием
Старый 11.01.2012, 17:00   #2
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Код:
var
  FPath:AnsiString;
  xptFile:file of TOrderShortInfo;
  decoded_array:array of TOrderShortInfo;
  i:integer;
begin
  FPath:=ExtractFilePath(ParamStr(0))+'Export\test.xpr';
  ForceDirectories(ExtractFilePath(FPath));
  AssignFile(xptFile,FPath);
  if FileExists(FPath) then Reset(xptFile) else Rewrite(xptFile);
  SetLength(decoded_array,FileSize(xptFile));
  try
    i:=0;
    while not EOF(xptFile) do
    begin
      Read(xptFile, decoded_array[i]);
      inc(i);
    end;
  finally
    CloseFile(xptFile);
  end;
end;
1. Динамические массивы начинаются с нуля.
2. Добавил проверку на существование директории и файла.
Пробуйте, должно работать.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 11.01.2012, 18:40   #3
Sullla
Пользователь
 
Регистрация: 27.05.2011
Сообщений: 24
По умолчанию

Спасибо, но проблема явно не в отсутствии файла или нумерации масива... это детали...
Ошибка ведь правописания ...
Цитата:
В строке Read(xptFile, decoded_array[i]) выдает "Missing operator or semicolor"...
Sullla вне форума Ответить с цитированием
Старый 11.01.2012, 19:22   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Думаю, что во 2-ом параметре read вам надо передавать размер читаемой записи, а не саму запись или её номер.

Read(xptFile, SizeOf(TOrderShortInfo));
Человек_Борща вне форума Ответить с цитированием
Старый 11.01.2012, 19:30   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
В строке Read(xptFile, decoded_array[i]) выдает "Missing operator or semicolor"...
НЕ подтверждаю!
ничего подобного не выдаёт!
И вообще, в какой момент выдаёт?
Дайте скриншот!

Цитата:
Сообщение от Человек_Борща
Думаю, что во 2-ом параметре read вам надо передавать размер читаемой записи, а не саму запись или её номер.
Вы КАТЕГОРИЧЕСКИ неправы! Это же ТИПИЗИРОВАННЫЙ файл!


Цитата:
Спасибо, но проблема явно не в отсутствии файла или нумерации масива... это детали...
Мне бы Ваш оптимизм - попытка прочитать несуществующий файл или прочитать его в область памяти за пределами массива (читай - в чужую область памяти) вы называете "деталями"... ну-ну!

Последний раз редактировалось Serge_Bliznykov; 11.01.2012 в 19:33.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.01.2012, 19:34   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Человек_Борща, файл типизированный потому размер известен заранее.
и тем более читать мы будет куда? в размер?

синтаксических ошибок я не вижу если честно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.01.2012, 19:39   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Пепел Феникса
синтаксических ошибок я не вижу если честно.
ну и правильно, что не видите! Их нет!
я не поленился запустить Delphi, вставить код и откомплировать.
Никаких проблем при компиляции - НЕТ!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.01.2012, 11:17   #8
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

ТС следует сменить версию делфи скорее всего.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 12.01.2012, 11:32   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ТС следует сменить версию делфи скорее всего.
А при чём здесь версия Delphi ?!
Вы хотите сказать, что под какой-то версией этот код станет синтаксически неверным?! Под какой?..


p.s. я так и не увидел ответа на свои вопросы - в какой момент выдаётся ошибка и где её скриншот...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.01.2012, 11:38   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
В строке Read(xptFile, decoded_array[i]) выдает "Missing operator or semicolor"...
В указанном коде проблемы нет. Проблема в коде, который вы не показали. У вас где-то есть что-то (например, с именем Read), что конфликтует с этим кодом.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение из бинарного файла Kukurudza Общие вопросы C/C++ 6 08.09.2011 19:09
Чтение данных из бинарного файла Faramir02 Общие вопросы C/C++ 3 22.12.2010 22:43
запись/чтение из бинарного файла. H1ghlander Общие вопросы C/C++ 0 21.11.2010 17:44
Чтение типизированого бинарного файла (ILDA) Ryazanec Общие вопросы Delphi 6 24.10.2010 21:16
Чтение из бинарного файла. kir_rik Помощь студентам 2 04.06.2010 00:31