Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.09.2011, 15:35
ssergey_96 ssergey_96 вне форума
Прохожий
 
Регистрация: 13.09.2011
Сообщения: 10
Репутация: 10
По умолчанию Как заставить работать поиск файла по маске

Как заставить работать поиск файла по маске
Я пишу мини поисковик по расширениям и хочу перенести функцию поиска из формы и проекта в длл
Проект компилируеться но после того как я выбираю папку и нажимаю кнопку выскакивает ошибка "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  
Старый 13.09.2011, 21:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Скорее всего вам нужно:
Код:
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  
Старый 13.09.2011, 22:30
ssergey_96 ssergey_96 вне форума
Прохожий
 
Регистрация: 13.09.2011
Сообщения: 10
Репутация: 10
По умолчанию

Нет не вышло теперь пишет Access violation at address 00403a3c
Ответить с цитированием
  #4  
Старый 13.09.2011, 22:36
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Кинь проект, а то лень писать.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 13.09.2011, 22:44
ssergey_96 ssergey_96 вне форума
Прохожий
 
Регистрация: 13.09.2011
Сообщения: 10
Репутация: 10
По умолчанию

Лови там исх проекта и длл
P.S С использыванием длл писать только начал
Вложения
Тип файла: rar Skan.rar (137.8 Кбайт, 8 просмотров)
Ответить с цитированием
  #6  
Старый 13.09.2011, 22:50
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Антивирус не даёт скачать архив, убери exe и dll из архива.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 13.09.2011, 22:52
ssergey_96 ssergey_96 вне форума
Прохожий
 
Регистрация: 13.09.2011
Сообщения: 10
Репутация: 10
По умолчанию

Уже Убрал .
Вложения
Тип файла: rar Skan.rar (52.2 Кбайт, 9 просмотров)
Ответить с цитированием
  #8  
Старый 13.09.2011, 23:13
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Лови каку.
Код:
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  
Старый 13.09.2011, 23:19
ssergey_96 ssergey_96 вне форума
Прохожий
 
Регистрация: 13.09.2011
Сообщения: 10
Репутация: 10
По умолчанию

Спасибо большое !
Ответить с цитированием
  #10  
Старый 13.09.2011, 23:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ты забыл убрать из архива project1.dll, антивирус ругается на него и обзывает Induc.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 13.09.2011 в 23:41.
Ответить с цитированием
  #11  
Старый 13.09.2011, 23:35
ssergey_96 ssergey_96 вне форума
Прохожий
 
Регистрация: 13.09.2011
Сообщения: 10
Репутация: 10
По умолчанию

Странно, касперский молчит поставлю на сканирование вдруг что есть
Полазил в интернете и нашел то что он заражает только файлы написанные на делфи

Последний раз редактировалось ssergey_96, 13.09.2011 в 23:51.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:53.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025