Страница 1 из 1
файл
Добавлено:
12.02.2014 13:56:15
crancv
Прошу помощи. Как на паскаль написать программу, которая запрашивает ввод имени файла и если файл есть, создает другой файл, причем имя созданного файла - это расширение введенного имени файла+15, а расширение допустим .inc
Например: исходный файл Main.txt, в результате работы программы должен появиться файл txt15.inc
Начало в принципе понятно:
var
s:string;
Writeln('Введите имя файла');
read(s);
Как быть дальше ? Какой алгоритм дальнейших действий по созданию нового файла ?
Re: файл
Добавлено:
12.02.2014 14:04:23
Sharfik
На листке бумаги берешь описываешь список действий твой, т.е. алгоритм. Стрелочками показываешь куда что возращается и обращается.
изучаешь функции необходимые для конкретных ситуаций по алгоритму. fileexist() extractfilepath() extractfileext() и т.п.
Re: файл
Добавлено:
12.02.2014 14:28:12
crancv
Спасибо конечно, эти функции мне известны, но к сожалению не удается реализовать это программно, возникают те или иные трудности, то с расширением, то с именем. Если есть возможность, прошу приложить часть кода реализующую данные действия.
Re: файл
Добавлено:
12.02.2014 15:01:16
Лекс Айрин
crancv если у тебя известно имя файла, то ...
1)после ввода файла откусываешь у полученной строчки расширение (найдя поиском от конца точку {помним о возможности двойного расширения!}или ExtractFileExt{но в этом случае, если я правильно помню, надо будет отрезать точку в первом символе}) и сохраняешь его отдельно. Можешь сразу же собрать имя.
2)ищешь файл функцией fileexist() если да, то создаешь файл. Если нет, то, соответственно, не создаешь.
желательно сразу же определиться с каталогом в котором стоит искать.
ЗЫ: ты бы лучше свой код выложил...
Re: файл
Добавлено:
12.02.2014 15:07:21
qivi
Извлечение расширения из пути файла:
http://www.delphibasics.ru/ExtractFileExt.phpЧто б без точки спереди, можно например так:
- Код: Выделить всё
copy(ExtractFileExt('C:\Program Files\Borland\Delphi7\Projects\Unit1.dcu'),2,length('C:\Program Files\Borland\Delphi7\Projects\Unit1.dcu')-1)
Re: файл
Добавлено:
12.02.2014 15:30:54
crancv
Вот текст программы, но в результате ее работы создается файл допустим с именем .inc (Безусловно при наличии файла допустим Main.inc в текущей директории).
Кто знает как избавиться от точки, добавить после inc цифру 15 и установить расширение к примеру .doc
Program One;
uses Utils;
type Resurses=record
Index:byte;
Kol_vo:uint64;
end;
var
Input:file;Output:text;Path:string;InputFileName:string;
Massive:array[0..255] of Resurses;
a:byte;
i:uint64;
Lenght:uint64;
//Вот кусок кода в котором нужно что-то добавить !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Begin
Writeln('Пожалуйста, введите имя файла');
Read(Path);
Assign(Input,Path);
if FileExists(Path) = False then
Writeln('File ',Input,' not found')
else
Begin
Assign(Output,ExtractFileExt(Path));
Reset(Input);
Writeln('File ',Path, ' open succeful !!!');
Lenght:=FileSize(Input);//Сохраним размер файла в переменной
Writeln('Размер файла равен : ',Lenght,' байт');
Rewrite(Output);//Открыть файл на запись
Writeln(Output,ExtractFileName(Path));//Запись имени файла
Writeln(Output,FileSize(Input));//Запись размера файла
Writeln(Output);//Пропустить строку в файле
//После этого ничего добавлять ненадо !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
///---------------------------------------------------------////
// Это область для экспериментов
for i:=1 to Lenght do
Begin
Read(Input,a);
inc (Massive[a].Kol_vo);
end;
for i:=0 to 255 do
begin
Massive[i].Index:=i;
writeln(Output,Massive[i].Index,' ',Massive[i].Kol_vo);
end;
//Конец области экспериментов
//Закрываем файлы
Close(Input);
Close(Output);
end;
end.
Re: файл
Добавлено:
12.02.2014 15:57:56
Лекс Айрин
crancv писал(а):Кто знает как избавиться от точки, добавить после inc цифру 15 и установить расширение к примеру .doc
Это обычная работа со строками
http://ret-prog.do.am/publ/programmirov ... i/3-1-0-14 Только помним о кодировках и если используется UTF8, то нужно выбирать функции работающие с ней.
viewtopic.php?p=27100#p27100- Код: Выделить всё
Assign(Output,ExtractFileExt(Path));
Замени на, допустим,
- Код: Выделить всё
Assign(Output, delete(ExtractFileExt(Path), 1, 1))
ЗЫ: Открывая файл стоит учитывать и то, что может не хватить на это прав.
Re: файл
Добавлено:
12.02.2014 19:19:24
crancv
Спасибо, воспользовался Assign(Output, delete(ExtractFileExt(Path), 1, 1)); , только пришлось разбить ее на несколько строк текста, по другому PascalAbc.net вылетает
с ошибкой.
Re: файл
Добавлено:
13.02.2014 09:09:00
Лекс Айрин
crancv, это уже мелочи. А вот то, что у тебя PascalAbc.net лучше было сразу сказать.