Путь к файлу и параметрам.[Pascal]
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
В файле написано 32.59.1.0-32.59.1.127 тока не имею представления чем это вам поможет т.к даже просто скопировать содержимое из файла в файл не получается.
В том, что код верен - у меня сомнений не возникает. Наверное единственное что могу посоветовать - прописать "жесткие" пути к файлам ввода и вывода. Вполне может быть косяк с текущей директорией.
Например: fin: "C:\input.txt", fout: "C:\otvet.txt"
Например: fin: "C:\input.txt", fout: "C:\otvet.txt"
It's a long way to the top if you wanna rock'n'roll
У меня первая версия проги так и работает через жесткие пути однако хотел её функциональнее сделать но видимо не дано =(
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
думаю имелось ввиду в параметрах передать полный путь.
Содержимое могло помочь тем, что если ты через строку собирался копировать бинарный файл, то получится полная лажа.
Содержимое могло помочь тем, что если ты через строку собирался копировать бинарный файл, то получится полная лажа.

- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
и вапче, никто не отменял BlockRead/BlockWrite

Никто не отменял а кто-то незнал если можно по подробнее.Игорь Акопян писал(а):и вапче, никто не отменял BlockRead/BlockWrite
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
но никто не отменял и хелп!!
рассказываю - в IDE Pascal пишем BlockRead (можно и BlockWrite)
подводим курсор к написанному слову, нажимаем Ctrl-F1 внимательно читаем ;-))
идём в самый низ, там "Sample Code:" - нажимаем на Blockrd.pas и получаем код (скопировано ПОЛНОСТЬЮ из хелпа):
внимание! Программа копирования файла простейшая - обработки ошибок нет.
Только проблема у Вас не в этом (это решение проблемы, если файл не текстовый).
А Вам нужно в командной строке задавать ПОЛНЫЙ путь к файлу.
рассказываю - в 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.
Только проблема у Вас не в этом (это решение проблемы, если файл не текстовый).
А Вам нужно в командной строке задавать ПОЛНЫЙ путь к файлу.
О спс копирует тока Buf, SizeOf(Buf), NumRead NumWritten вот это что?Просто знать надо а то я понять не могу =(
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
Stream, не примите мои слова как попытку Вас обидеть, но, честное слово, почитайте книжку(и) по Паскалю! Многие вопросы отпадут
))
и ещё, учитесь читать код - там вся понятно ;-) Тем более, что имена переменных "говорящие".
а теперь по сути вопроса. читаем:
Buf - : array[1..2048] of Char - это массив из 2048 символов.
нужен для работы процедур BlockRead/BlockWrite - туда читаются данные и оттуда они записываются в файл.
SizeOf( перменная) - системная функция, которая возращает размер, занимаемый переменной в памяти (в данном случае, SizeOf(Buf), вернётся число 2048)
NumRead - вспомогательная целочисленная переменная, в которую процедура BlockRead возращает число реально прочитанных байт. Потом мы используем эту переменную, чтобы указать процедуре BlockWrite сколько байт из буфера писать в файл.
NumWritten - вспомогательная целочисленная переменная, в которую процедура BlockWrite возращает число реально записанных байт.
ещё вопросы будут? ;-))

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