|
Вопрос # 538/ вопрос открыт / |
|
Здравствуйте!
Вот нашел ответ на свой вопрос в виде кода. Вопрос: как "прилепить" этот код к форме?
чтобы оно прочитало путь с поля Edit (не нужно там Open Dialog и всякие другие заморочки делать).
Приложение: Переключить в обычный режим- procedure DoIt(const Dir: string);
- var
- SR: TSearchRec;
- begin
- SetCurrentDir(Dir);
- if FindFirst(Dir + '*.*', faAnyFile, SR) = 0 then
- begin
- repeat
- if (SR.Name <> '.') and (SR.Name <>
'..') then
- begin
- RenameFile(SR.Name, AnsiLowerCase(SR.Name));
- if (SR.Attr and faDirectory) <> 0 then
- DoIt(Dir + SR.Name + '');
- end;
- until FindNext(SR) <> 0;
- FindClose(SR);
- end;
- end;
 |
Вопрос задал: Pokemonchyk (статус: Посетитель)
Вопрос отправлен: 28 апреля 2007, 16:39
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Dron
Здравствуйте, Pokemonchyk!
А в чём проблема? Подключить функцию к форме? Делается это точно также, как и добавление новых методов к объектам. В заголовке функции в разделе реализации перед названием функции дописать имя формы:
procedure TForm1.DoIt(const Dir: string);
И добавить заголовк функции в private или public модуля формы...
Вот и всё.
 |
Ответ отправил: Dron (статус: Студент)
Время отправки: 28 апреля 2007, 16:44
|
Ответ #2. Отвечает эксперт: Помфюк Владимир Степанович
Здравствуйте, Pokemonchyk!
Легко! Процедуру DoIt оставляете такой как она у Вас есть, на форму бросаете кнопку и Edit. Допустим имена у них останутся по-умолчанию: Button1 и Edit1. В свойстве OnClick кнопки Button1 дважды кликаете - Delphi создаст процедуру Button1Click. В ней пишете:
DoIt(Edit1.Text)
Приложение: Переключить в обычный режим- procedure DoIt(const Dir: string);
- var
- SR: TSearchRec;
- begin
- SetCurrentDir(Dir);
- if FindFirst(Dir + '*.*', faAnyFile, SR) = 0 then
- begin
- repeat
- if (SR.Name <> '.') and (SR.Name <> '..') then
- begin
- RenameFile(SR.Name, AnsiLowerCase(SR.Name));
- if (SR.Attr and faDirectory) <> 0 then
- DoIt(Dir + SR.Name + '');
- end;
- until FindNext(SR) <> 0;
- FindClose(SR);
- end;
- end;
-
- procedure TForm1.Button1Click(Sender: Tobject);
- begin
- DoIt(Edit1.Text);
- end;
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 30 апреля 2007, 21:12; участников в обсуждении: 3.
|
Pokemonchyk (статус: Посетитель), 28 апреля 2007, 21:34 [#1]:
to Помфюк Владимир Степанович
не работает 
to Dron
мне нужно чтобы путь к папке оно считывало с поля Edit
|
|
Dron (статус: Студент), 28 апреля 2007, 21:40 [#2]:
Ну так после подключения функции к форме всё упрощается - вместо параметра Dir указать Edit.Text. Кстати, непонятно, зачем там написано const Dir: string - слово const явно лишнее.
"не работает" - конкретнее, плиз - на что ругается.
С уважением.
|
|
Pokemonchyk (статус: Посетитель), 28 апреля 2007, 22:49 [#3]:
"после подключения функции к форме всё упрощается"
вот именно что я и не умею нестандартные функции подключать. Я сделал как написано было в коде (в вашем ответе). Заменить Dir на Edit1.Text - вааще хз. что выходит. Если можно выложите код полностью.
|
|
Denisss (статус: 2-ой класс), 28 апреля 2007, 23:44 [#4]:
Dron,
Цитирую текст книги Дж.Бакнелла "Фундаментальные алгоритмы и структуры данных в Delphi." - СПб.: ООО "ДиаСофтЮП", 2003ю - 560 с:
"Если функции передать строку, которая в процессе выполнения функции не будет изменяться, объявляйте ее как const. В большинстве случаев это исключает скрытое добавление блока try..finally. Если не использовать ключевое слово const, компилятор будет считать, что значение, возможно, будет изменяться, и поэтому вводит скрытую локальную переменную для хранения строки. В начале выполнения функции счетчик ссылок будет увеличен на 1, а в конце - уменьшен на 1. Чтобы гарантировать, что значение счетчика всегда будет уменьшаться, компилятор вставляет скрытый блок try..finally.
Если из строки объявления функции убрать ключевое слово const, ее быстродействие снизится приблизительно на 12% - это и есть влияние скрытого блока try..finally."
|
|
Denisss (статус: 2-ой класс), 29 апреля 2007, 00:48 [#6]:
Книжка полезная, но не касается напрямую Вашего вопроса. Просто я хотел пояснить, что const вовсе не является лишним. Для этого сослался на книжку.
PS
А у меня обложка другая
|
|
Dron (статус: Студент), 30 апреля 2007, 09:27 [#7]:
Спасибо за информацию Но значение переменной в функции всё равно не меняется.
Pokemonchyk: ну что, так и не получилось? Сначала нужно подключить функцию к форме, как я в ответе указал, а затем её вызвать где-нибудь: DoIt(Edit1.Text);
С уважением.
|
|
Pokemonchyk (статус: Посетитель), 30 апреля 2007, 21:12 [#8]:
нет не получается. если не сложно - вышлите пожалуйста все файлы проэкта мне на почту. Я уже и в файле *.dpr пробовал чето писать...
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|