![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Как заставить работать поиск файла по маске
Я пишу мини поисковик по расширениям и хочу перенести функцию поиска из формы и проекта в длл Проект компилируеться но после того как я выбираю папку и нажимаю кнопку выскакивает ошибка "Cannot to assign to TForm1 to a TlistboxStrings" вот код длл Код:
library Project1; uses SysUtils, Classes; {$R *.res} function FindFile(Folder,Mask:String;List:TStrings):TStrings;stdcall; var SR: TSearchRec; // Folder: String; begin Folder := IncludeTrailingPathDelimiter(Folder); if FindFirst(Folder + Mask, faAnyFile, SR) = 0 then try repeat if ((SR.Attr and faDirectory) = 0) and // Файл, а не папка? SameFileName(ExtractFileExt(SR.Name), '.exe') then // Расширение - exe? List.Add(Folder + SR.Name); // Если да - добавляем until FindNext(SR) <> 0; finally Result:=List; FindClose(SR); end; end; exports FindFile; begin end. А Вот код самого приложения Код:
var Form1: TForm1; implementation function FindFile(Folder,Mask:String;List:TStrings):TStrings;stdcall;external 'Find.dll'; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin List.Items:=(FindFile(Shell.Path,Mask.Text,List.Items)); end; end. |
#2
|
||||
|
||||
![]() Скорее всего вам нужно:
Код:
procedure TForm1.Button1Click(Sender: TObject); begin List.Items.AddStrings(FindFile(Shell.Path, Mask.Text, List.Items)); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() Нет не вышло теперь пишет Access violation at address 00403a3c
|
#4
|
||||
|
||||
![]() Кинь проект, а то лень писать.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() Лови там исх проекта и длл
P.S С использыванием длл писать только начал |
#6
|
||||
|
||||
![]() Антивирус не даёт скачать архив, убери exe и dll из архива.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() Уже Убрал .
|
#8
|
||||
|
||||
![]() Лови каку.
Код:
unit Unit15; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) List: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; function FindFile(Folder, Mask : String; var List : TStringList) : Boolean; stdcall; external 'Find.dll'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var s : TStringList; begin s := TStringList.Create; try if FindFile('d:\borland\work\games\', '*.*', s) then List.Items.AddStrings(s); finally s.Free; end; end; end. //------------------------------------------ library find; uses Classes, SysUtils; function FindFile(Folder, Mask : String; var List : TStringList) : Boolean; stdcall; var SR : TSearchRec; St : String; begin Result := False; St := IncludeTrailingPathDelimiter(Folder); if FindFirst(St + Mask, faAnyFile, SR) = 0 then try repeat if ((SR.Attr and faDirectory) = 0) and // Файл, а не папка? SameFileName(ExtractFileExt(SR.Name), '.exe') then // Расширение - exe? List.Add(St + SR.Name); // Если да - добавляем until FindNext(SR) <> 0; finally Result := True; FindClose(SR); end; end; exports FindFile; end. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 13.09.2011 в 23:16. |
#9
|
|||
|
|||
![]() Спасибо большое !
|
#10
|
||||
|
||||
![]() Ты забыл убрать из архива project1.dll, антивирус ругается на него и обзывает Induc.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 13.09.2011 в 23:41. |
#11
|
|||
|
|||
![]() Странно, касперский молчит поставлю на сканирование вдруг что есть
Полазил в интернете и нашел то что он заражает только файлы написанные на делфи Последний раз редактировалось ssergey_96, 13.09.2011 в 23:51. |