Путь к файлу и параметрам.[Pascal]

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

Stream
Сообщения: 26
Зарегистрирован: 05 фев 2008, 13:09

13 фев 2008, 15:30

В файле написано 32.59.1.0-32.59.1.127 тока не имею представления чем это вам поможет т.к даже просто скопировать содержимое из файла в файл не получается.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

13 фев 2008, 16:28

В том, что код верен - у меня сомнений не возникает. Наверное единственное что могу посоветовать - прописать "жесткие" пути к файлам ввода и вывода. Вполне может быть косяк с текущей директорией.
Например: fin: "C:\input.txt", fout: "C:\otvet.txt"
It's a long way to the top if you wanna rock'n'roll
Stream
Сообщения: 26
Зарегистрирован: 05 фев 2008, 13:09

13 фев 2008, 18:59

У меня первая версия проги так и работает через жесткие пути однако хотел её функциональнее сделать но видимо не дано =(
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

14 фев 2008, 15:31

думаю имелось ввиду в параметрах передать полный путь.
Содержимое могло помочь тем, что если ты через строку собирался копировать бинарный файл, то получится полная лажа.
Изображение
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

14 фев 2008, 15:35

и вапче, никто не отменял BlockRead/BlockWrite
Изображение
Stream
Сообщения: 26
Зарегистрирован: 05 фев 2008, 13:09

14 фев 2008, 15:59

Игорь Акопян писал(а):и вапче, никто не отменял BlockRead/BlockWrite
Никто не отменял а кто-то незнал если можно по подробнее.
Serge_Bliznykov
Сообщения: 366
Зарегистрирован: 31 авг 2007, 03:06

15 фев 2008, 02:13

но никто не отменял и хелп!!
рассказываю - в IDE Pascal пишем BlockRead (можно и BlockWrite)
подводим курсор к написанному слову, нажимаем Ctrl-F1 внимательно читаем ;-))
идём в самый низ, там "Sample Code:" - нажимаем на Blockrd.pas и получаем код (скопировано ПОЛНОСТЬЮ из хелпа):

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

program CopyFile;
{ Simple, fast file copy program with NO error-checking }
var
  FromF, ToF: file;
  NumRead, NumWritten: Word;
  Buf: array[1..2048] of Char;
begin
  Assign(FromF, ParamStr(1)); { Open input file }
  Reset(FromF, 1);  { Record size = 1 }
  Assign(ToF, ParamStr(2)); { Open output file }
  Rewrite(ToF, 1);  { Record size = 1 }
  Writeln('Copying ', FileSize(FromF), ' bytes...');
  repeat
    BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
    BlockWrite(ToF, Buf, NumRead, NumWritten);
  until (NumRead = 0) or (NumWritten <> NumRead);
  Close(FromF);
  Close(ToF);
end.
внимание! Программа копирования файла простейшая - обработки ошибок нет.

Только проблема у Вас не в этом (это решение проблемы, если файл не текстовый).
А Вам нужно в командной строке задавать ПОЛНЫЙ путь к файлу.
Stream
Сообщения: 26
Зарегистрирован: 05 фев 2008, 13:09

15 фев 2008, 05:12

О спс копирует тока Buf, SizeOf(Buf), NumRead NumWritten вот это что?Просто знать надо а то я понять не могу =(
Serge_Bliznykov
Сообщения: 366
Зарегистрирован: 31 авг 2007, 03:06

15 фев 2008, 11:10

Stream, не примите мои слова как попытку Вас обидеть, но, честное слово, почитайте книжку(и) по Паскалю! Многие вопросы отпадут ;) ))
и ещё, учитесь читать код - там вся понятно ;-) Тем более, что имена переменных "говорящие".

а теперь по сути вопроса. читаем:
Buf - : array[1..2048] of Char - это массив из 2048 символов.
нужен для работы процедур BlockRead/BlockWrite - туда читаются данные и оттуда они записываются в файл.
SizeOf( перменная) - системная функция, которая возращает размер, занимаемый переменной в памяти (в данном случае, SizeOf(Buf), вернётся число 2048)
NumRead - вспомогательная целочисленная переменная, в которую процедура BlockRead возращает число реально прочитанных байт. Потом мы используем эту переменную, чтобы указать процедуре BlockWrite сколько байт из буфера писать в файл.
NumWritten - вспомогательная целочисленная переменная, в которую процедура BlockWrite возращает число реально записанных байт.

ещё вопросы будут? ;-))
Medved
Сообщения: 250
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

15 фев 2008, 21:37

Под Debian GNU/Linux и ParamStr работает классно =)
Ответить