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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2010, 13:24   #1
polarity
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 30
Восклицание Заполнение бинарного файла.

Код:
program six;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var    group,i, j, k1 :integer;
                  memo:string;
                     f:file;

procedure input(var f:file);
var l:byte;
 begin
  write('group:');
  readln(group);
  write('memo:');
  readln(memo); {считываем значения}
  l:=length(memo); {смотрим длину memo}
  blockwrite(f, group, 4); {записываем}
  blockwrite(f, l, 1);
  blockwrite(f, memo, l);
end;

procedure OutPut(var f:File);
var l:Byte;
begin
  reset(F,1);
  while not eof(F) do
   begin
    blockread(F,group,4);
    blockread(F,l,1);
    blockread(F,memo,l);
    writeLn('Gruppa : ',group);
    writeLn('Pole Memo : ',memo);
   end;
  close(F);
end;

procedure output_rus_symbols(var f:file);
var l,k:byte;
 begin
  reset(f,1);
  writeln('Records with Russian symbols:');
  while not EOF(f) do
   begin
    blockread(f,group,4); {считываем значения}
    blockread(f,l,1);
    blockread(f,memo, l);
    k:=0;
    for i:=1 to length(memo) do
     begin
      case memo[i] of
       #128..#175 : inc(k); {смотрим русские ли символы}
       #224..#241 : inc(k);
      end;
     end;
  if length(memo)=k then {если вся строка из русских то выводим}
   begin
    writeln('group:', group);
    writeln('memo:', memo);
   end;
 end;
close(f);
end;

begin
assignfile(f,'b:\bit.txt');
write('Enter count of records :');
readln(j);
rewrite(f,1);
for k1:=1 to j do
input(f);
Close(f);
OutPut(f);
writeln('RESULT : ');
output_rus_symbols(f);
readln
  { TODO -oUser -cConsole Main : Insert code here }
end.
Посмотрите пожалуйста что не так с заполнением бинарного файла. Основная процедура вроде работает. Срочно
polarity вне форума Ответить с цитированием
Старый 10.06.2010, 06:42   #2
polarity
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 30
По умолчанию

up up up
очень срочно, сегодня сдавать...плз
polarity вне форума Ответить с цитированием
Старый 10.06.2010, 08:43   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) вполне можно было обойтись без записи отдельно длины строки.

2) но, если уж её пишите, так и используйте правильно.

короче.
запись строки в файл:
Код:
  blockwrite(f, l, 1);
  blockwrite(f, memo[1], l);
обратите внимание на указание начала строчки! писать с первого символа строки

читать так:
Код:
    blockread(F,l,1);
    setlength(memo,l);
    blockread(F,memo[1],l);
удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из бинарного файла. kir_rik Помощь студентам 2 04.06.2010 00:31
проблема при выводе с бинарного файла... xVxSeRGxVx Общие вопросы C/C++ 1 13.01.2010 19:08
вытащить текст UTF16 из бинарного файла МОЛНИЯ Помощь студентам 1 04.01.2009 15:12