Проблема с чтением/записью файла

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Помогите решить задачу! Дело такое:

Дан графический файл(картинка) "picture-1.dat". Нужно составить программу, которая создаст файл "picture-1.jpg" (поменяет расширение *.dat на *.jpg).+запросит новое имя файла.

Я составил так, но создаваемый файл ничего не отаброжает и его размер (0 байт).

Код: Выделить всё

Program convertor;
 Uses crt;
  const
  n=1234;
  kol=118;
 Var directory1,directory2: string;
f,f2: file;
allsize: longint;
buf: array [1..n] of byte;
 Begin
ClrScr;
Writeln('Введите директорию *.dat файла');
Read(directory1);
Writeln('Введите директорию *.jpg файла');
Read(directory2);
assign(f,directory1); reset(f);
assign(f2,directory2); rewrite(f2);
allsize:=filesize(f);
blockread(f,buf,allsize);
blockwrite(f2,buf,allsize);
close(f);
close(f2);
readkey;
end.



Как правильно?
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

reset(f);
Здесь открытие файла с длиной записи в 128 байт: Reset(F,1) и Rewrite(F2,1) исправит этот недочет.
К тому же Blockread явно забегает за буффер (где вы видели JPG максимум в 1234 байт).
Blockread читает в записях а не в байтах.
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Спасибо за ответ, конечно, но вы не могли бы оставить КОД правильно составленной программы. Ато я не пойму фразу " Blockread явно забегает за буффер (где вы видели JPG максимум в 1234 байт). Blockread читает в записях а не в байтах" непонял.
Или хотя бы объясните что это значит? Спасибо...
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Если не критично время работы -
repeat
blockread(f,b,1);
blockwrite(f2,b,1);
until eof(f);
где b - переменная типа байт.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

ОГРОМНОЕ СПАСИБО Хыиуду! Сработало!!!
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
CADE
Сообщения: 24
Зарегистрирован: 09 дек 2006, 01:53

А с файлами кто- нить дружит!!!
Ответить