Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 561
от 13.08.2006, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 353, Экспертов: 48
В номере:Вопросов: 7, Ответов: 15


Вопрос № 51455: Здравствуйте, Уважаемые эксперты! В папке с программой находится еще одна папка, в которой расположено несколько текстовых файлов. Загружаю в listBox имена этих файлов (см приложение). Как теперь в зависимости от выделенного имени файла в Li...
Вопрос № 51496: Доброго времени суток.Такая вот проблемка: в программе необходимо запускать несколько потоков, количество которых определяется при выполнении программы (в зависимости от размера TStrings).Я создаю динамический массив потоков (размер которго определяе...
Вопрос № 51508: Здравствуйте уважаемые эксперты. 1)Никак не могу найти в хэлпе функцию, которая определяет, существует ли заданный каталог или нет... Может подскажете как она называеться. 2) В программе копирую файлы из одной директории в другую, с помощью п...
Вопрос № 51511: Здравствуйте эксперты!! У меня такой вопрос: есть компонент Edit, я ввожу в него данные потом закрываю программу и мне нужно чтобы эти данные при следующем запуске программы были в этом Edit'е!!!Подскажите как это можно осуществить?? Зар...
Вопрос № 51527: Здравствуйте! Есть у меня такой вопрос... Вот на форме у меня четыре CheckBox'а (Ch1 ... Ch4) (и больше ничего). Четвертый из них общий, т.е. если стоят галочки в первых трех, то автоматически ставится и в четвертом. Если хотя в одном из них нет гало...
Вопрос № 51532: Здравствуйте! Вот такой вопрос возник:как из делфи можно вызвать свой-во обозревателя Windows? Через WINAPI или ShellAPI? Cпасибо!...
Вопрос № 51541: Уважаемые эксперты! Будьте любезны ответить на такой вопрос. Практически через поисковик искал программу Delphi v.3 или любую версию. Нигде не нашел. В Borlande цены кусаются. Может кто-то из Вас подскажет адресок, где можно скачать бесплатную и полн...

Вопрос № 51.455
Здравствуйте, Уважаемые эксперты!

В папке с программой находится еще одна папка, в которой расположено несколько текстовых файлов. Загружаю в listBox имена этих файлов (см приложение). Как теперь в зависимости от выделенного имени файла в ListBox'е прочитать из него данные и отобразить в Мемо.

Приложение:

Отправлен: 08.08.2006, 01:52
Вопрос задал: Solovej (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Solovej!
Создаете обработчик onClick для вашего sListBox-а и заменяете пустую, только что созданную процедуру на код в приложении. Не забудьте Memo1 в процедуре переименовать в то, как оно у вас называется.

Приложение:

---------
Не узнаешь - не попробуешь.

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 08.08.2006, 04:07
Оценка за ответ: 5

Отвечает: Савенко Вадим Иванович
Здравствуйте, Solovej!
Желательно бы , конечно, имена файлов с полным путем указывать, а потом использовать код Сухомлина Кирилла Владимировича. Вот так примерно:

var
Dir: string;

begin
Dir:= GetCurrentDir + 'Files';
...
LoadFromFile(Dir + sListBox1.Items[sListBox1.ItemIndex]+'.txt');
...
end;
Ответ отправил: Савенко Вадим Иванович (статус: 6-ой класс)
Ответ отправлен: 08.08.2006, 06:41
Оценка за ответ: 5

Отвечает: Mo-skin
Здравствуйте, Solovej!
У меня работает вот такой код.
(см. приложение)

Приложение:

---------
Чем больше женщину мы меньше,- тем меньше больше мы ее!

Ответ отправил: Mo-skin (статус: 2-ой класс)
Ответ отправлен: 08.08.2006, 22:13
Оценка за ответ: 5


Вопрос № 51.496
Доброго времени суток.Такая вот проблемка: в программе необходимо запускать несколько потоков, количество которых определяется при выполнении программы (в зависимости от размера TStrings).Я создаю динамический массив потоков (размер которго определяется программно). Все работает оплично, но при завершении программы выдается ошибка "Project **.exe raised exception class EAccessViolation with message 'Access violation at address ** in module **.exe' Write at address **" Process stoped".(насколько я понимаю при завершении происходит уничтожение массива, но его элементов нет, т.к.потоки завершились и уничтожились в ходе выполнения программы). Подскажите пожалуста как избежать данной ситуации.

Приложение:

Отправлен: 08.08.2006, 12:33
Вопрос задал: VNos (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Melamed
Здравствуйте, VNos!
Дожидайся завершения всех созданных потоков при выходе из программы.

Приложение:

Ответ отправил: Melamed (статус: 2-ой класс)
Ответ отправлен: 09.08.2006, 14:33


Вопрос № 51.508
Здравствуйте уважаемые эксперты.
1)Никак не могу найти в хэлпе функцию, которая определяет, существует ли заданный каталог или нет... Может подскажете как она называеться.
2) В программе копирую файлы из одной директории в другую, с помощью процедурки (в приложении), при копировании появляеться стандартное окно Win-копирования. Но хотелось бы чтобы файлы копировались в фоне или пользователь не мог отменить копирование.

Приложение:

Отправлен: 08.08.2006, 13:47
Вопрос задал: Пепеляев Александр Павлович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ерёмин Андрей
Здравствуйте, Пепеляев Александр Павлович!
1. Это функция DirectoryExists().
2. Думаю, что эта статья вам поможет.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 08.08.2006, 13:52
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: Никольский Валерий Александрович
Здравствуйте, Пепеляев Александр Павлович!
1. Функция назвается DirectoryExists
Пример использования
if not DirectoryExists('Log') then CreateDir('Log');
2. Вам обязательно что бы пользователь мог видеть копирование файлов? Могу способ копирования файлов что бы пользователь не видел. Не используйте эти функции... Попробуйте
CopyFile(С: est.txt, D:, True)
Ответ отправил: Никольский Валерий Александрович (статус: 8-ой класс)
Ответ отправлен: 08.08.2006, 13:59

Отвечает: Physicist
Здравствуйте, Пепеляев Александр Павлович!

1. function DirectoryExists(const Directory: string): Boolean;
(Unit SysUtils или FileCtrl)

2. Вот некоторые флаги поля fFlags, которые могут пригодиться (все зависит от задачи):
FOF_NOCONFIRMATION - автоматически отвечать "Да для всех" для любого диалогового окна.
FOF_NOCONFIRMMKDIR - не спрашивать о создании новой папки.
FOF_NOERRORUI - не отображать пользовательский интерфейс в случае ошибки.
FOF_SILENT - не отображать окно с информацией о копировании.
FOF_SIMPLEPROGRESS - отображать окно, но не отображать имена копируемых файлов.
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 08.08.2006, 14:00
Оценка за ответ: 5
Комментарий оценки:
Про флаги полезная инфа. Спасибо

Отвечает: Савенко Вадим Иванович
Здравствуйте, Пепеляев Александр Павлович!
Нап первый вопрос Вам уже ответили, а что касается второго, то исправьте одну строчку в процедуре:


Fo.fFlags := FOF_SILENT; // не показывать окно копирования
Ответ отправил: Савенко Вадим Иванович (статус: 6-ой класс)
Ответ отправлен: 08.08.2006, 16:27


Вопрос № 51.511
Здравствуйте эксперты!!
У меня такой вопрос:
есть компонент Edit, я ввожу в него данные потом закрываю программу и мне нужно чтобы эти данные при следующем запуске программы были в этом Edit'е!!!Подскажите как это можно осуществить??
Зарание спасибо!!!
Отправлен: 08.08.2006, 14:24
Вопрос задал: F Ruslan R (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Physicist
Здравствуйте, F Ruslan R!

Естественно, данные нужно где-то сохранять, чтобы потом можно было их восстановить. Обычно сохраняют в обработчике OnDestroy, а восстанавливают - в OnCreate. А в качестве места хранения можно выбрать:
1. Реестр Windows - см. использование класса TRegistry модуля Registry;
2. Ini-файл - см. класс TIniFile модуля IniFiles;
3. Свой файл (любого типа), работать с которым можно так, как Вам хочется.
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 08.08.2006, 14:48

Отвечает: Татьяна
Здравствуйте, F Ruslan R!
Возможно вам помогут ответы на данный вопрос:
http://rusfaq.ru/info/question/32647

Вопрос звучит не так, но идея та же
---------
Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 08.08.2006, 15:14


Вопрос № 51.527
Здравствуйте! Есть у меня такой вопрос... Вот на форме у меня четыре CheckBox'а (Ch1 ... Ch4) (и больше ничего). Четвертый из них общий, т.е. если стоят галочки в первых трех, то автоматически ставится и в четвертом. Если хотя в одном из них нет галочки, то в четвертом тоже нет. Если ставишь галочку в четвертом, то в первых трех тоже автоматически проставляются галочки. Думаю, что Вы поняли, что я имею в виду.
Вот соответственно написал две процедуры:

procedure TForm1.CheckBox4Click(Sender: TObject);
var i:integer;
begin
if CheckBox4.Checked then
for i:=0 to Form1.ComponentCount-1 do
(Components[i] as TCheckBox).Checked:=true
else
for i:=0 to Form1.ComponentCount-1 do
(Components[i] as TCheckBox).Checked:=false;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
{для чекбоксов Ch2, Ch3 в событиях OnClick эта же процедура}
var i:integer;
t:boolean;
begin
t:=true;
for i:=0 to Form1.ComponentCount-1 do
if not (Components[i] as TCheckBox).Checked then t:=false;
if t then CheckBox4.Checked:=true
else CheckBox4.Checked:=false;
end;

Но вся хитрость-то в том и заключается, что, например, при нажатии на Ch4 в первые три Ch1 ... Ch3 не только проставляют галки, но и запускается первая процедура, а это не нужно.
Понятно, что нужно ввести логические переменные. Одной не хватает. А вот с двумя я уже третий час мають и никак допетрить не могу куда и чего добавить. Если кто понял меня, то прошу помочь :)
P.S. Если не затруднит, то готовый код более желателен ;)
Отправлен: 08.08.2006, 18:15
Вопрос задал: kopfschwarz (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Physicist
Здравствуйте, kopfschwarz!

Можно и без логических переменных - просто проверять статус CheckBox'ов перед присвоением им нового статуса. Если статус такой же - не нужно производить никаких действий. Это всё выглядит примерно так:

Приложение:

Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 08.08.2006, 18:32

Отвечает: Coupler
Здравствуйте, kopfschwarz!
Все правильно. Добавляем еще один флаг и все готово.
Если что не так - стучите в минифорум или вн. почту.

Приложение:

Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 08.08.2006, 18:43


Вопрос № 51.532
Здравствуйте!
Вот такой вопрос возник:как из делфи можно вызвать свой-во обозревателя Windows?
Через WINAPI или ShellAPI?
Cпасибо!
Отправлен: 08.08.2006, 18:25
Вопрос задал: SA2006 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Physicist
Здравствуйте, SA2006!

Самый простой способ -
WinExec('control.exe inetcpl.cpl', SW_NORMAL);
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 08.08.2006, 18:54


Вопрос № 51.541
Уважаемые эксперты! Будьте любезны ответить на такой вопрос. Практически через поисковик искал программу Delphi v.3 или любую версию. Нигде не нашел. В Borlande цены кусаются. Может кто-то из Вас подскажет адресок, где можно скачать бесплатную и полноценную версию.
С уважением ко всем Вам, brat.
Отправлен: 08.08.2006, 21:16
Вопрос задал: Brat (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Brutaller
Здравствуйте, Brat!
Интересует именно Delphi 3 или вообще какая-нибудь Delphi ?
Я у себя на одном диске нашел 3-ю версию, если упаковать в архив, то получается 63,2 Мб. Я ее ни разу не устанавливал, поэтому не могу сказать, все ли с ней хорошо. Но если надо могу залить например на http://rapidshare.de/
Более поздние версии будут явно более 100 Мб весить.
Delphi 7 например в архиве 246 Мб весит.
Ответ отправил: Brutaller (статус: 2-ой класс)
Ответ отправлен: 09.08.2006, 01:00

Отвечает: Савенко Вадим Иванович
Здравствуйте, Brat!

Да, действительно, лучше диск купить. Тем более, что Вы не обязаны знать происхождение диска (в смысле пиратский он или нет). А насчет v.3 , то вряд ли Вы ее найдете. Проще 2005-2006 купить.
Ответ отправил: Савенко Вадим Иванович (статус: 6-ой класс)
Ответ отправлен: 09.08.2006, 08:43


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное