PDA

Просмотр полной версии : [Помогите!] Работа с файлами


*Женька*
15.10.2011, 08:41
Э всем привет !
у меня проблема хочу на кнопку поставить код чтоб искала файл и удаляла его чтоб можно было писать название в коде вот смотрите
мой код находит но не удаляет =)
procedure TForm1.Button2Click(Sender: TObject);
var
fileName: string;
fullFilePath : string;
dir1, dir2 : string;

begin
// Файл который мы будет искать
fileName := 'finger.exe';
// Определение двух каталогов, где мы хотим искать файл
dir1 := 'C:\';
dir2 := 'C:\Program Files';

// Поиск файла
fullFilePath := FileSearch(fileName, dir1+';'+dir2);

// Если мы поищем сейчас, мы найдем его в текущем каталоге
if fullFilePath = ''
then ShowMessage(fileName+' не найден')
else ShowMessage(fullFilePath+' найден');

// Теперь удаляем Test.txt из текущего каталога и повторяем поиск
DeleteFile(fileName);

// Если мы поищем теперь, мы найдем его в одной из директорий поиска
fullFilePath := FileSearch(fileName, dir1+';'+dir2);
if fullFilePath = ''
then ShowMessage(fileName+' не найден')
else ShowMessage(fullFilePath+' найден');
end;
end.

VeTaL_UA
15.10.2011, 09:07
fileName := 'finger.exe';
// Теперь удаляем Test.txt из текущего каталога и повторяем поиск
DeleteFile(fileName);
И почему же оно по твоему должно удалять Test.txt???

Немного подправил твой код, хотя не понимаю зачем он... В Edit1 - имя файла, который удаляем, в Edit2 и Edit3 - предполагаемые пути к файлам...

procedure TForm1.Button2Click(Sender: TObject);
var
fileName:string;
fullFilePath:string;
dir1,dir2:string;
begin
fileName:=Edit1.Text;
dir1:=Edit2,Text;
dir2:=Edit3.Text;
try
fullFilePath:=FileSearch(fileName,dir1+';'+dir2);
if fullFilePath='' then
begin
ShowMessage(fileName+' не найден');
end
else
begin
ShowMessage(fullFilePath+' найден');
end;
DeleteFile(fileName);
fullFilePath:=FileSearch(fileName,dir1+';'+dir2);
if fullFilePath='' then
begin
ShowMessage(fileName+' не найден');
end
else
begin
ShowMessage(fullFilePath+' найден');
end;
finally
fileName:='';
fullFilePath:='';
dir1:='';
dir2:='';
end;
end;

*Женька*
15.10.2011, 10:45
И почему же оно по твоему должно удалять Test.txt???

Немного подправил твой код, хотя не понимаю зачем он... В Edit1 - имя файла, который удаляем, в Edit2 и Edit3 - предполагаемые пути к файлам...

procedure TForm1.Button2Click(Sender: TObject);
var
fileName:string;
fullFilePath:string;
dir1,dir2:string;
begin
fileName:=Edit1.Text;
dir1:=Edit2,Text;
dir2:=Edit3.Text;
try
fullFilePath:=FileSearch(fileName,dir1+';'+dir2);
if fullFilePath='' then
begin
ShowMessage(fileName+' не найден');
end
else
begin
ShowMessage(fullFilePath+' найден');
end;
DeleteFile(fileName);
fullFilePath:=FileSearch(fileName,dir1+';'+dir2);
if fullFilePath='' then
begin
ShowMessage(fileName+' не найден');
end
else
begin
ShowMessage(fullFilePath+' найден');
end;
finally
fileName:='';
fullFilePath:='';
dir1:='';
dir2:='';
end;
end;
а можно чтоб поиск был задан не через Edit а он был указан в самом коде?

4ipolino
15.10.2011, 12:51
а можно чтоб поиск был задан не через Edit а он был указан в самом коде?
/facepalm
самый простой вариант для тебя впиши в едит нужное название файла и установи свойство visible = false
ну или в коде замени едит на название файла

VeTaL_UA
15.10.2011, 21:56
а можно чтоб поиск был задан не через Edit а он был указан в самом коде?
:wtf:

Что это значит? Если не нужен ввод в Edit, тогда:
procedure TForm1.Button2Click(Sender: TObject);
var
fileName:string;
fullFilePath:string;
dir1,dir2:string;
begin
fileName:='finger.exe';
dir1:='C:\';
dir2:='C:\Program Files';
try
fullFilePath:=FileSearch(fileName,dir1+';'+dir2);
if fullFilePath='' then
begin
ShowMessage(fileName+' не найден');
end
else
begin
ShowMessage(fullFilePath+' найден');
end;
DeleteFile(fileName);
fullFilePath:=FileSearch(fileName,dir1+';'+dir2);
if fullFilePath='' then
begin
ShowMessage(fileName+' не найден');
end
else
begin
ShowMessage(fullFilePath+' найден');
end;
finally
fileName:='';
fullFilePath:='';
dir1:='';
dir2:='';
end;
end;

*Женька*
15.10.2011, 23:49
да,да я так и сделал файл находит а вот удалят не хочет...

VeTaL_UA
16.10.2011, 10:59
да,да я так и сделал файл находит а вот удалят не хочет...
Я тебе даже объясню почему:
fileName:='finger.exe';
dir1:='C:\';
dir2:='C:\Program Files';
DeleteFile(fileName);
В твоем коде, программа пытается удалить finger.exe из ПАПКИ, ГДЕ ЛЕЖИТ САМА ПРОГРАММА, а надо бы из этих, C:\ и C:\Program Files, папок, проверяя их наличие там. И вообще, твой код кривой какой-то... Вот:
procedure TForm1.Button2Click(Sender: TObject);
var
fileName:string;
fullFilePath:string;
dir1,dir2:string;
begin
fileName:='finger.exe';
dir1:='C:\';
dir2:='C:\Program Files';
if FileExists(dir1+fileName) then
begin
DeleteFile(dir1+fileName);
ShowMessage('Файл '+dir1+fileName+' удалён');
end;
if FileExists(dir2+fileName) then
begin
DeleteFile(dir2+fileName);
ShowMessage('Файл '+dir2+fileName+' удалён');
end;
fileName:='';
dir1:='';
dir2:='';
end;
Этот делает то же самое, что и твой, только компактнее он, да и правильнее... ;)