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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 171
от 05.07.2005, 01:10

Администратор:Калашников О.А.
В номере:Вопросов: 6, Ответов: 32


Вопрос № 22815: Приветствую всех кто читает это письмо. Правил я не помню так что извеняюсь за то что задам сразу два вопроса. 1) Как нажатием одной кнопки остановить (поставить на паузу) то что выполняется после нажатия другой. 2) Необходимо сделать Wri...
Вопрос № 22821: Здравствуйте. Как с помощью дельфи открыть файл mdb в access. Т.е. запускался access и открывался нужный файл. Я слышал что это можно сделать shell. Всем заранее спасибо....
Вопрос № 22832: C помощью какой программы можно добавлять в *.res файлы html файлы, а то я постоянно для этих целей использовал ResHacker, но после него часто *.res файл накрывается....
Вопрос № 22837: Привет всем!!! Ребята у меня большая проблема нужно на Delphi создать приложение по рисованию кружков и стрелок что их соединяют (графов) и что б можно их двигать по полю и стрелки перерисовывались. Мне такой курсак дали не знаю как и начать. Сна...
Вопрос № 22852: Привет всем! Требуется по истечении какого-либо промежутка времени средней(!) величины (полчаса, час, два часа) выполнять определённое действие. Подскажите, как лучше подойти к этому вопросу с точки зрения реализации? Чем пользоваться? Таймером? ...
Вопрос № 22875: Здраствуйте уважаемые эксперты, у меня такойвопрос, как сделать чтобы при запуске програма сама себя скопировала в конкретную папку, например C:program files . Заранее спасибо....

Вопрос № 22.815
Приветствую всех кто читает это письмо.
Правил я не помню так что извеняюсь за то что задам сразу два вопроса.
1) Как нажатием одной кнопки остановить (поставить на паузу) то что выполняется после нажатия другой.
2) Необходимо сделать Writeln и Readln для Memo, или чтото похожее главное чтобы при вводе счётчик строк сам увеличивался на 1, а при считывании ожидалось нажатие Enter.
Заранее благодарю за ответ.
P.S. По поводу уточнений пешите на pegmeyme@xaker.ru
Отправлен: 29.06.2005, 00:58
Вопрос задал: GREEDY (статус: Посетитель)
Всего ответов отправлено: 5

Отвечает: sir henry
Здравствуйте, GREEDY!
1) Встречный вопрос:
а что у Вас запускается по нажатию первой кнопки? Здесь не чтецы мыслей на расстоянии, а обычные люди. :)
2) Смеетесь да?
Мемо это массив строк. Вот от этого и пляшите:
а) Добавить строчку - Memo.Lines.Add(s);
б) Прочитать строчку - s:=Memo.Lines[Индекс_строки];
в) Изменить какую либо строку - Memo.Lines[Индекс_строки]:= s;
Изменеие счетчика строк это автоматически - это полностью Ваша забота, например цикл организуйте:
For i:=0 to 39 do
Memo.Lines.Add:='Ваша строка или что там еще';
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 29.06.2005, 06:56

Отвечает: Tsechoev Bagaudin
Здравствуйте, GREEDY!
1. Для этого не обходимо поднять отдельный поток и синхронизировать с помощью семафоров или мьютексов. Если не разберешься пиши на форум по Delphi http://www.ingush.com
2. У мемо есть свой счетчик строк Memo1.Lines.Count и строка у него как раз то что заканчивается на "нажатии enter".
Memo1.Lines.Add('Строка 1') - WriteLn
Memo1.Lines.Strings[0] - ReadLn

---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 29.06.2005, 09:59

Отвечает: Ерёмин Андрей
Здравствуйте, GREEDY!
1) Думаю, проще всего завести переменную (например, PActive: Boolean). Когда какое-то действие выполняется, периодически проверять состояние этой переменной. Если оно False, то прекращать операцию, если True - то продолжать. Соответственно, первая кнопка будет делать PActive:=False, а перед запуском действия нужно поставить PActive:=True. Или можно использовать потоки (Threads).
2) Думаю, проще всего перехватывать нажатия клавиш. В Memo.OnKeyDown пропишите: If (Key=VK_LEFT) or (Key=VK_RIGHT) or (Key=VK_UP) or (Key=VK_DOWN) Then Key:=0; Это запретит перемещать курсор по текстовому полю.
If (Key=VK_RETURN) Then Begin Memo.Lines.Add(''); Memo.CaretPos.Y:=Memo.Lines.Count-1; End; - это поместит кусрор на строку ниже. Думаю, так. А вообще, можно создать консольное приложение.
---------
Жизнь - игра, в которой нет setup'а...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 29.06.2005, 10:37

Отвечает: Delphin
Здравствуйте, GREEDY!
1. Смотря что ты выполняеш. Если в отдельном потоке то для этого есть спец. функции потоков. Щас точно не помню но Resume, Pause (Вроде так).
Если ты запускаеш цикл в главном потоке вот так:
Repeat
// Что повторяеш
until {что-то не сделается} or {кнопка не будет нажата допустим}.
end
2. Непонял вопроса. В MEMO и так можно ввожить текст. Просто на событие ввода/смены текста сделай свою обработку.
---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 7-ой класс)
Отправлен: 29.06.2005, 10:39

Отвечает: Jadd
Здравствуйте, GREEDY!
1) объявляешь глобальную переменную, например, bIsRunning: Boolean. И дальше одной кнопкой ставишь в true, а другой - считываешь, делаешь что-то и ставишь в false.

2) Не совсем понятно что нужно. Memo - массив строк. ОТсюда и пляши. Делаешь либо динамический массив типа String, либо TStringList. Чтение Readln до нажатия enter - по сути цикл while ... do, в котором условием окончания ввода будет клавиша enter.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 29.06.2005, 10:57


Вопрос № 22.821
Здравствуйте.
Как с помощью дельфи открыть файл mdb в access. Т.е. запускался access и открывался нужный файл. Я слышал что это можно сделать shell.
Всем заранее спасибо.
Отправлен: 29.06.2005, 07:03
Вопрос задал: Crick (статус: Посетитель)
Всего ответов отправлено: 5

Отвечает: sir henry
Здравствуйте, Crick!
Через функцию ShellExecute(). Только, естественно, нужно чтобы у Вас Access на машине стоял. :)
Так-же необходимо подключить модуль ShellAPI (в нем расположена эта функция).
Синтаксис:
ShellExecute(
hwnd, // Хэндл родительского окна
lpOperation, // Что делаем с файлом - 'open' - открыть
lpFile, // Имя файла
lpParameters, // Параметры, можно поставить NIL
lpDirectory, // Рабочий каталог, тоже можно поставить NIL
INT nShowCmd // Как показывать окно, обычно SW_SHOW
);
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 29.06.2005, 07:52

Отвечает: Tsechoev Bagaudin
Здравствуйте, Crick!
Если Delphi 7 то AccessApplication на вкладке Servers и юзай его там много чего можно, а shell это 19 век.
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 29.06.2005, 10:13

Отвечает: Delphin
Здравствуйте, Crick!
Если я тебя правильно понял то ты хочеш что-бы при каком-то событии в твоей программе открывался Microsoft Access нужный тебе файл.
Если да то тогда используй ShellExecute(); - Эта функция находится в Unit'e - ShellApi.
Если ты хотел работать с Access прямо из своей программы то тебе надо научится работать с OLE.
---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 7-ой класс)
Отправлен: 29.06.2005, 10:35

Отвечает: Ерёмин Андрей
Здравствуйте, Crick!
Элементарно:
ShellExecute(Handle,'open','msaccess.exe','C:Documentsase1.mdb','',SW_SHOWNORMAL);
Если файлы *.mdb ассоциированы с Access, то можно просто запускать сам файл (без вызова msaccess.exe).
---------
Жизнь - игра, в которой нет setup'а...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 29.06.2005, 10:37

Отвечает: Jadd
Здравствуйте, Crick!
Дык есть три функции для этого. ShellExecute, winexec, CreateProcess. Вторая уже устраевшая в немогу и основана на CreateProcess только без наследования хэндлов. Все основано на файловых ассоциациях. Запускаешь файл, а ось запускает нужное приложение. А если хочешь к структуре достучаться, то юзай ADO.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 29.06.2005, 10:51


Вопрос № 22.832
C помощью какой программы можно добавлять в *.res файлы html файлы, а то я постоянно для этих целей использовал ResHacker, но после него часто *.res файл накрывается.
Отправлен: 29.06.2005, 10:42
Вопрос задал: source (статус: Посетитель)
Всего ответов отправлено: 5

Отвечает: sir henry
Здравствуйте, source!
А зачем именно в RES? Добавляйте в RC - это обычный текстовый файл, потом RC компилируете с помощью brcc32 (получается RES) и добавьте RES файл в текст всоей программы.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 29.06.2005, 10:56

Отвечает: Gin
Здравствуйте, source!
Для этих целей используется BRCC32.
Как Все Это делается? Смотрите в приложении!
С Уважением, Gin.

Приложение:

Ответ отправил: Gin (статус: Студент)
Отправлен: 29.06.2005, 12:50

Отвечает: Ерёмин Андрей
Здравствуйте, source!
Я скорее не помогаю, а хочу узнать: почему же он накрывается? Я в ресурсы чего только не добавлял с помощью Resource Hacker - всегда всё нормально работало. Какая, кстати, версия RH? Последняя, вроде бы, - 3.4. Другой, более реальный вариант - хранить в файле ресурсов не html-файл, а txt. Т.е. взять полный код html и записать в текстовый файл. А потом при загрузке ресурса переименовывать расширение файла из "txt" в "html". Думаю, так всё надёжно.
---------
Жизнь - игра, в которой нет setup'а...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 29.06.2005, 13:32

Отвечает: Delphin
Здравствуйте, source!
Я пользуюсь "Restorator 2004 никогда .res файлы не убивает.
А вообще пользоваться надо brc.exe.
Как компилировать ресурсы говорилось не раз.
Если кряк не найдеш могу с этим помочь (delphinster@gmail.com).

---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 7-ой класс)
Отправлен: 29.06.2005, 14:11

Отвечает: John Freeman
Здравствуйте, source!
brcc32 конечно, ну и Resource Workshop...
пример скрипта для brcc32 тут
где testhtml - имя ресурса
RCDATA - секция для ресурса
your.html - имя файла из которого будет создан ресурс
после чего кидаешь получившийся res в папку проекта(строчек=>ресурсов может быть фактически очень много) и {$R your.res}

Приложение:

---------
You're trying to take me They trying to make me This is the only Gives me the only thing Tired of lying, I'm tired of lying The only thing I inderstand is what I feel...

Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 29.06.2005, 20:00


Вопрос № 22.837
Привет всем!!!
Ребята у меня большая проблема нужно на Delphi создать приложение по рисованию кружков и стрелок что их соединяют (графов) и что б можно их двигать по полю и стрелки перерисовывались. Мне такой курсак дали не знаю как и начать. Сначала я модифицировал компонент Tshape чтобы в нем можно было выводить метки (номера) а вот со стрелками проблема не знаю как можно в Delphi реализовать. Может у кого то есть готовая процедура или компонент или может кто-то поможет. Буду очень признателен.
Спасибо всем.
Извините за беспокойство
Тарас
Отправлен: 29.06.2005, 12:34
Вопрос задал: btaras (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: sir henry
Здравствуйте, btaras!
Здесь есть компонент типа TShape, в котором помио всего прочего можно делать линии и стрелки:
http://www.torry.net/vcl/packs/interfacelite/misc.zip
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 29.06.2005, 12:53

Отвечает: Ерёмин Андрей
Здравствуйте.

Я написал простенькую процедуру, которая рисует на канве (TCanvas) стрелку, направленную вправо. Код в приложении. Используемые параметры:

Canvas - канва для рисования (например, Form1.Canvas);
X,Y - координаты начала стрелки (левый верхий угол продолговатой части);
L1 - длина продолговатой части;
L2 - ширина сужающейся части;
H1 - высота продолговатой части;
H2 - длина отклонения наклонных линий от продолговатой части.
FrameColor - цвет границы стрелки;
FillColor - цвет заливки стрелки;
FillStyle - стиль заливки стрелки, например bsSolid (можете посмотреть в св-ве Brush-Style компонента TShape).

Иными словами, стрелка выглядит так (не знаю, корректно ли это отобразится):

_______________|
|
|_______________ /
|/

/продолг. часть/ /суж./

Думаю, с процедурой разберётесь, ничего сложного здесь нет. Если требуется рисовать стрелку влево, вверх или вниз, то придётся изменять все координаты. А вот если стрелка должна быть наклонены под определённым углом, то здесь вам помогут знания алгебры и геометрии :) Воспользоваться нужно arcsin и arccos. Ну а если вам нужно рисовать "простые" стрелочки из трёх линий (одна прямая и две наклонные выходят из её конца), то здесь всё существенно проще. Компонент для рисования стрелок я не встречал, но наверняка они cуществуют. Ищите по слову "arrow". Удачи!

Приложение:

---------
Жизнь - игра, в которой нет setup'а...

Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 29.06.2005, 15:47

Отвечает: Master135
Здравствуйте, btaras!
Честно сказать прога у меня такая есть(по работе нейросетей если знаешь что это такое) одна проблема не перерисовываются и не перетягиваются компоненты, но тшейп тоже модифицированный с едитом на нем. Стрелки проводятся автоматически только надо выделять 2 кружка так что если хочещь напиши мне на мыло master135@rambler.ru.Кроме того там описанна работа этой сети с подсчетами результатов. так что если это тебе надо...
Ответ отправил: Master135 (статус: 5-ый класс)
Отправлен: 01.07.2005, 12:35


Вопрос № 22.852
Привет всем!
Требуется по истечении какого-либо промежутка времени средней(!) величины (полчаса, час, два часа) выполнять определённое действие. Подскажите, как лучше подойти к этому вопросу с точки зрения реализации? Чем пользоваться? Таймером? Вроде как он не для этих целей предназначен...
Отправлен: 29.06.2005, 18:22
Вопрос задал: Ерёмин Андрей (статус: Студент)
Всего ответов отправлено: 7

Отвечает: Bochvarov NikB
Здравствуйте, Ерёмин Андрей!
Конечно - таймер. Надо вьибрат (ест и много внешние компоненти), но таймер делфи тоже хорош.
Если хочеш смотрет сколко время осталос - следай интервал 1000мс (или 60000 на минуту) и сделай счетчик. Етот счетчик можеш показьиват как HH:MM:SS или HH:MM.
Ответ отправил: Bochvarov NikB (статус: 4-ый класс)
Отправлен: 29.06.2005, 18:28
Оценка за ответ: 4
Комментарий оценки:
Считаем кол-во миллисекунд на час:
1000*60*60 = 3600000. Не многовато для таймера? А сутки? 3600000*24 = 86400000.

Отвечает: Jadd
Здравствуйте, Ерёмин Андрей!
А для каких же целей он предназначен? Нука просвети. Берешь таймер. Ставишь интервал в миллисекундах. Запускаешь и проверяешь. Можно интервал и полчаса ставить и секунду и что еще тебе будет угодно.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 29.06.2005, 18:33
Оценка за ответ: 4
Комментарий оценки:
Он нужен, как правило, для отсчёта небольших промежутков времени. В программе пользователь сможет настроить этот интервал, т.е. может поставить даже сутки. Соответственно, тип данных для этого не очень-то и подходит.

Отвечает: Denisss
Здравствуйте, Ерёмин Андрей!
А кто Вам сказал, что он не для этих целей?! Если Вам не нужен высокоточный (с точностью до каждой милисекунды) таймер, то свободно используйте простой TTimer. Полчаса=15 минут * 60 секунд * 1000 миллисекунд = 900000 и т.д.
Ответ отправил: Denisss (статус: 8-ой класс)
Отправлен: 29.06.2005, 19:09
Оценка за ответ: 5
Комментарий оценки:
Вот это более реальное решение.

Отвечает: streetcat
Здравствуйте, Ерёмин Андрей!
Как раз для таких самых ;)
не ну на самом деле! Конечно Timer1.Interval := 3600000 выглядит немного некрасиво, но ты делай так (для 1 часа): Timer1.Interval := 60*60*1000;
первая цифра - минуты. Вот так будет как у кулхакеров ;) ;) ;)
---------
WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 6-ой класс)
Отправлен: 29.06.2005, 22:09
Оценка за ответ: 5

Отвечает: Tsechoev Bagaudin
Здравствуйте, Ерёмин Андрей!
Вообще-то он как раз для такого рода целей и предназначен. Просто исходи из того, что желательно сделать алгоритм назначенных задач. Если прога подразумевает только их выполнение пользуйся таймером, если есть какие-то другие сопутствующие задачи, то поднимай потоки. Если незнаешь как с ними работать, то пиши на http://www.ingush.com/modules.php?name=Forums в форуме по Delphi. Удачи и знаний!!!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 29.06.2005, 23:55
Оценка за ответ: 4

Отвечает: sir henry
Здравствуйте, Ерёмин Андрей!
Ну отчего же не для этого, как раз для этого. :)
В таймере задается период, после отсчета которого он выдает сигнал, потом опять считает и опять сигнал и так далее, пока таймер не выключить.
В событие OnTimer записываете свою процедуру, которая делает то что Вам нужно с периодом который Вы определяете в Interval.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 30.06.2005, 05:42
Оценка за ответ: 3

Отвечает: Stamm
Здравствуйте, Ерёмин Андрей!
Ставь Интервал у таймера, причём в миллисекундах, затем в процедуре
procedure TForm1.Timer1Timer(Sender: TObject);
begin
{Здесь определённое действие}
Timer1.Enabled:=false;{В самом конце}
end;
Ответ отправил: Stamm (статус: 3-ий класс)
Отправлен: 01.07.2005, 11:53
Оценка за ответ: 2


Вопрос № 22.875
Здраствуйте уважаемые эксперты, у меня такойвопрос, как сделать чтобы при запуске програма сама себя скопировала в конкретную папку, например C:program files . Заранее спасибо.
Отправлен: 30.06.2005, 00:48
Вопрос задал: Staskin (статус: Посетитель)
Всего ответов отправлено: 7

Отвечает: komatoz
Здравствуйте, Staskin!
Используй инсталяторы..
Пример: InnoSetup
Ответ отправил: komatoz (статус: 2-ой класс)
Отправлен: 30.06.2005, 03:06

Отвечает: Ерёмин Андрей
Здравствуйте, Staskin!
Самый простой способ:
CopyFile(PChar(Application.ExeName),PChar('C:Program Files'+ExtractFileName(Application.ExeName)),False);
---------
Жизнь - игра, в которой нет setup'а...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 30.06.2005, 07:42

Отвечает: Jadd
Здравствуйте, Staskin!
Открываем главный модуль программы и после секции Application.Initialize пишем:

var
curPath: String;
destPath: String;
exeName: String;
Index: Integer;
begin
curPath := Application.ExeName; //текущий путь запускаемого приложения
//destPath будет содержать путь куда копировать
destPath := 'C:Program files';

for Index:= Length(curPath) downto 1 do
begin
if curPath[Index] = '' then
begin
destPath := destPath + exeName;
end
else
exeName := exeName + curPath[Index];
end;

//теперь копируем файл
CopyFile(PChar(curPath), PChar(destPath), TRUE);

Примерно так.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 30.06.2005, 10:25
Оценка за ответ: 5

Отвечает: Tsechoev Bagaudin
Здравствуйте, Staskin!
procedure TForm1.FormCreate(Sender: TObject);
begin
CopyFile(PAnsiChar(ExtractFilePath(Application.ExeName)+'Project1.exe'),PAnsiChar('C:Program FilesProject1.exe'),True);
end;
Если формы в проге нет, просто подключи юнит Forms и пропиши эту строку в секцию Run.
Удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 30.06.2005, 10:26

Отвечает: Delphin
Здравствуйте, Staskin!
CopyFile(Application.ExeName,'C:program filesYouAppapp.exe');
Скопирует ваше приложение в папку C:program filesYouApp файл app.exe
Вставь на собтие Form1.OnCreate.
---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 7-ой класс)
Отправлен: 30.06.2005, 10:27

Отвечает: Gin
Здравствуйте, Staskin!

uses ShellApi; // Надо указать

procedure TForm1.FormShow(Sender: TObject);
function FileManage(FromFile, ToFile: string; mode: integer): integer;
var
SHF: TSHFileOpStruct;
frombuf, tobuf: array [0..128] of Char;
begin
FillChar( frombuf, Sizeof(frombuf), 0 );
FillChar( tobuf, Sizeof(tobuf), 0 );
with SHF do
begin
Wnd := 0;
// Задан шаблон, но можно вообще убрать вместе с последним слэшем
pFrom := StrPCopy(frombuf, 'C:Windows*.bmp');
pTo := PChar('C:copy'); // Если папки нет - будет
wFunc := FO_COPY;
fFlags := FOF_NOCONFIRMMKDIR;
end;
Result := SHFileOperation(SHF);
if Result <> 0 then
if SHF.fAnyOperationsAborted then
Result := 1
else Result := 2;
end;
begin
// Если и нужны комментарии - слэши снять
// case
FileManage('C:Windows*.bmp.*', 'C:copy', FO_COPY)
//; of
// 0: ShowMessage ('Все ОК');
// 1: ShowMessage ('Cам прервал');
// 2: ShowMessage ('Ошибка выполнения');
end;

С Уважением, Gin.
Ответ отправил: Gin (статус: Студент)
Отправлен: 30.06.2005, 11:39

Отвечает: streetcat
Здравствуйте, Staskin!
если у твоей проги есть главная форма то в ее обработчике события OnCreate сделай код как в приложении.
если форм нет, то в коде проекта вставь тот же код.

Приложение:

---------
WinERROR: Keyboard not detected. Press Enter to continue

Ответ отправил: streetcat (статус: 6-ой класс)
Отправлен: 04.07.2005, 19:02


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное