Форум: "Начинающим";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизВвод вывод в консоли Найти похожие ветки
← →
STUDENT_RU (2005-10-06 10:11) [0]Здравствуйте...
Помогите, пожалуйста, найти ошибку. Замучился вже..
В общем, есть код:
uses
Windows, SysUtils, shellapi, StrUtils, System;
var
inp: TextFile;
...
begin
AssignFile(inp, "input1.txt");
Reset(inp);
Readln(inp, path);
Readln(inp, TypeOfFile);
Readln(inp, Old);
CloseFile(inp);
...
Программа консольная. Необходимо запускать ее из CMD.
Проблема: Обычным способом она запускается. При попытке запустить ее из командной строки выдается сообщение:
Exception EInOutError in module KillOld.Exe 0004D489.
File not Found. Файл input1.txt находится в каталоге программы.
Причем, если я вместо "input1.txt" указываю полное имя файла с путем, все работает отлично. Если же я начинаю формировать это имя в переменной при помощи функцииGetCurrentDir
, а затем эту переменну использую в качестве второго параметра вAssignFile
, программа не запускается, и выдается указанное выше сообщение об ошибке. В чем проблема?
Спасибо...
← →
Чапаев © (2005-10-06 11:46) [1]
> Если же я начинаю формировать это имя в переменной при помощи
> функции GetCurrentDir
Хм... А ты понимаешь, что такое GetCurrentDir? Может, стоит посмотреть в сторону ParamStr(0)?
← →
Leonid Troyanovsky © (2005-10-06 11:48) [2]
> STUDENT_RU (06.10.05 10:11)
> В чем проблема?
Никогда не следует имя файла включать в код.
Консольная программа вполне может получить его в качестве параметра
комстроки или, скажем, из ее настроек.
В самом общем случае имя этого файла должно быть полным,
т.е., включать полный путь.
И не надо делать никаких предположений относительно того,
где находится сама программа и тот самый файл.
--
Regards, LVT.
← →
STUDENT_RU (2005-10-06 12:19) [3]
> Хм... А ты понимаешь, что такое GetCurrentDir? Может, стоит
> посмотреть в сторону ParamStr(0)?
Так почему же если у меня в переменной, допустим, Path типа String находится "С:\Temp\Test\Input1.txt", то:
AssignFile(inp, path);
выдает данную ошибку?
← →
Чапаев © (2005-10-06 12:44) [4]AssignFile() выдаёт ошибку? Не верю!!!
← →
STUDENT_RU (2005-10-06 13:01) [5]
> AssignFile() выдаёт ошибку? Не верю!!!
Ну если я убираю из модуля этот кусок кода:
,
...
AssignFile(inp, "input1.txt");
Reset(inp);
Readln(inp, path);
Readln(inp, TypeOfFile);
Readln(inp, Old);
CloseFile(inp);
...
а значенияpath, TypeOfFile, Old
задаю константами и все работает, то где тогда ошибка?!
← →
Silver... © (2005-10-06 13:09) [6]inp: TextFile ???
> Readln(inp, path);
> Readln(inp, TypeOfFile);
> Readln(inp, Old);
???
← →
STUDENT_RU (2005-10-06 13:23) [7]
program KillOld;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, shellapi, StrUtils, System;
var
i: Integer;
FileCat, path: String;
TypeOfFile: String;
Old: String;
LenNames: array of Integer;
inp: TextFile;
intFileAge: LongInt;
procedure FindF(dir: string);
var
SR: TSearchRec;
begin
if FindFirst(dir, faAnyFile, SR) = 0 then
begin
repeat
if SR.attr = faDirectory then
begin
if (SR.Name <> ".") and (SR.Name <> "..") then
begin
SetLength(lennames, i + 1);
LenNames[i]:= length(SR.Name) + 1;
i:= i + 1;
path:= path + SR.Name + "\";
FindF(path + "*.*");
end;
end
else if RightStr(SR.Name,Length(TypeOfFile)) = TypeOfFile then
begin
intFileAge := FileAge(path+SR.Name);
if Date-FileDateToDateTime(intFileAge) >= StrToInt(Old) then
DeleteFile(pChar(path + sr.Name));
end;
until FindNext(SR) <> 0;
path:= LeftStr(path, (length(path) - LenNames[i - 1]));
dec(i);
FindClose(SR);
end;
end;
begin
i:= 0;
path:= "";
FileCat:= GetCurrentDir;
AssignFile(inp, FileCat + "\input1.txt");
Reset(inp);
Readln(inp, path);
Readln(inp, TypeOfFile);
Readln(inp, Old);
CloseFile(inp);
path:= path + "\";
FindF(path + "*.*");
end.
← →
Silver... © (2005-10-06 13:47) [8]вроде выглядет верно
чему равен FileCat послеFileCat:= GetCurrentDir;
Po moemu budet luchsheFile:= ExtractFilePath(ParamStr(0)) + {БЕЗ \} File_Name;
← →
Silver... © (2005-10-06 13:48) [9]вроде выглядет верно
чему равен FileCat послеFileCat:= GetCurrentDir;
По моему будет лучшеFile:= ExtractFilePath(ParamStr(0)) + {БЕЗ \} File_Name;
← →
Anatoly Podgoretsky © (2005-10-06 15:18) [10]STUDENT_RU (06.10.05 10:11)
AssignFile(inp, "input1.txt");
File not Found. Файл input1.txt находится в каталоге программы.
И где этот каталог программы здесь?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c