информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят медАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
За подарок спасибо, только такой вопрос: 01.11.04 14:22  Число просмотров: 2062
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
Отредактировано 01.11.04 15:37  Количество правок: 1
<"чистая" ссылка>
За подарок спасибо, только такой вопрос:
> Юзай Win32API... FindFirstFile() - FindNextFile() -
> FindClose()
есть ли альтернативный вариант? просто получить список файлов в директории и с каждым из них проделать одинаковые действия?
ах да, и ещё кое-что, как загнать сразу несколько файлов из OpenDialog'a (в смысле, в OpenDialog выбрать несколько файлов) в ListBox?
<programming>
[Delphi] работа с файлами в директории 01.11.04 08:21  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Два вопроса по этой теме:
1. как с каждым файлом из указанной директории сделать одни и те же действия?
2. как сделать диалог выбора директории (на закладке Dialogs такого нет, обычный OpenDialog не пашет)?
[Delphi] Я дарю его тебе ;-) 01.11.04 09:35  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
> Два вопроса по этой теме:
> 1. как с каждым файлом из указанной директории сделать одни
> и те же действия?
Юзай Win32API... FindFirstFile() - FindNextFile() - FindClose()

> 2. как сделать диалог выбора директории (на закладке
> Dialogs такого нет, обычный OpenDialog не пашет)?
Дарю тебе целый Unit. Надеюсь, разберёшься... Можешь потом использовать его в любой из своих программ.
unit SHBrowseFolder;
interface
Uses Windows, SysUtils;


  Function BrowseFolder(aWndOwner: THandle; aTitle: String; FromPath: String = ''): String;

implementation
Uses ActiveX, ShlObj;
Var fSHMalloc: IMalloc = Nil;

    Function BrowseCallbackProc(ahwnd: HWND; uMsg: UINT; alParam, lpData: LPARAM): integer; StdCall;
    Begin
      If uMsg = BFFM_INITIALIZED Then
        PostMessage(ahwnd, BFFM_SETSELECTION, DWORD(True), DWORD(lpData));
      Result := 0;
    End;
  Function BrowseFolder(aWndOwner: THandle; aTitle: String; FromPath: String = ''): String;
  Var
    anInfo: TBrowseInfo;
    aResult: PItemIDList;
  Begin
    ZeroMemory(@anInfo, SizeOf(anInfo));
    anInfo.hwndOwner := aWndOwner;
    anInfo.lpszTitle := PChar(aTitle);
    anInfo.ulFlags := BIF_RETURNONLYFSDIRS;
    If FromPath <> '' Then
    Begin
      anInfo.lpfn := @BrowseCallbackProc;
      anInfo.lParam := DWORD(PChar(FromPath));
    End;
    aResult := SHBrowseForFolder(anInfo);
    If aResult = Nil Then Abort;
    Try
      SetLength(Result, MAX_PATH);
      Win32Check(SHGetPathFromIDList(aResult, PChar(Result)));
      SetLength(Result, StrLen(PChar(Result)));
    Finally
      fSHMalloc.Free(aResult);
    End;
  End;



Initialization
  Win32Check(SHGetMalloc(fSHMalloc) = NOERROR);

Finalization
  If fSHMalloc <> Nil Then
    fSHMalloc._Release;
end.

---
За подарок спасибо, только такой вопрос: 01.11.04 14:22  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
Отредактировано 01.11.04 15:37  Количество правок: 1
<"чистая" ссылка>
За подарок спасибо, только такой вопрос:
> Юзай Win32API... FindFirstFile() - FindNextFile() -
> FindClose()
есть ли альтернативный вариант? просто получить список файлов в директории и с каждым из них проделать одинаковые действия?
ах да, и ещё кое-что, как загнать сразу несколько файлов из OpenDialog'a (в смысле, в OpenDialog выбрать несколько файлов) в ListBox?
«А можно ли получить список файлов без программирования»? Нет, нельзя ;-) Ведь надо хотя бы изъявить о своём желании ;-) 01.11.04 17:10  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 01.11.04 17:12  Количество правок: 1
<"чистая" ссылка>
> OpenDialog'a (в смысле, в OpenDialog выбрать несколько
> файлов) в ListBox?
Можно. Примерно так.
procedure TForm1.Button1Click(Sender: TObject);
Var
  aDial: TOpenDialog;
  anOptions: TOpenOptions;
begin
  aDial := TOpenDialog.Create(Self);
  Try
    anOptions := aDial.Options;
    Include(anOptions, ofAllowMultiSelect);
    aDial.Options := anOptions;
    If Not aDial.Execute Then Exit;
    ListBox1.Items.AddStrings(aDial.Files);
  Finally
    aDial.Free;
  End;
end;

---

Можно не создавать диалог динамически, а обращаться к тому, что положишь на форму. Принцип тот же. К тому же удобно настраивать опции диалога, сразу Object Inspector'ом.
Благодарю. И, если не возражаете, ещё один вопрос: 02.11.04 01:36  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
Отредактировано 02.11.04 01:37  Количество правок: 1
<"чистая" ссылка>
Благодарю. И, если не возражаете, ещё один вопрос:
Как получить значение указанной строки из ListBox в переменную типа string?
А ты справку почитать не пробовал??? 02.11.04 07:07  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка>
> Благодарю. И, если не возражаете, ещё один вопрос:
> Как получить значение указанной строки из ListBox в
> переменную типа string?

var
MyString : AnsiString;
....
MyString := ListBox1.Items.Strings[i];
где i - номер строки в листбоксе.

<private>А вообще, после прочтения твоих вопросов, у меня складывается стойкое впечатление, что справочных руководств (да того же встроенного хелпа в делфю) ты не читаешь в принципе. Никогда.
Либо у тебя большие проблемы с английским (учите, молодой человек, учите непременно!) или вообще нет никаких способностей к программированию (во что очень не хочется верить).</private>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach