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

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


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

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

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

Выпуск № 358
от 18.01.2006, 01:00

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


Вопрос № 33084: В журнале Хакер №80 читал статью "Delphi всемогущий" Вот первый абзац "Ты пишешь на дельфях и чувствуешь себя аутсайдером? Тебе нечем ответить в бесконечных hollywar'ах? Теперь ты точно будешь знать: дельфи стоит того, чтобы его лю...
Вопрос № 33094: Эксперты помогите (если можно пошпгово) как создать новый класс на основе TString... или чего нить подобного многострочного. Необходимо изменить ментод Create на предмет считывания строк из некоторого файла, добавить метод Read который бы читал опред...
Вопрос № 33118: Здравствуйте! Мне нужно организовать подсветку скрипта используя RichEdit (т.е. сторонние компоненты не предлагать). Конкретнее о подсветке: Нужно чтобы например: {% текст } <--вот такое выражение красилось в красный цвет, <a текст >...
Вопрос № 33121: Здравствуйте! Что-то раззадавался вопросами :( Подскажите, замучился искать :(. Мне необходимо распаковывать ZIP архивы. Ранее использовал ZipMaster. Пользователю НЕ надо знать что это зипы. Поэтому я "...
Вопрос № 33122: Какая была последняя версия BDE? Помогите найти последнюю версию. Нужно что было возможно устанавливать ее отдельно на любой компьютер. Укажите пожалуйста линк. Установке bde вместе с дельфи не предлагать. Заранее благодарен....
Вопрос № 33150: Уважаемые как сделать так чтоб компонент Timer - показывал на форме уменьшающеся свое значение. И еще как сделать часы в заголовке (чтоб они "тикали"). ...
Вопрос № 33151: Здравствуйте уважаемые эксперты. У меня вопрос: как уничтожить дочернее окно (MDIChild). Заранее спасибо...

Вопрос № 33.084
В журнале Хакер №80 читал статью "Delphi всемогущий" Вот первый абзац
"Ты пишешь на дельфях и чувствуешь себя аутсайдером? Тебе нечем ответить в бесконечных hollywar'ах? Теперь ты точно будешь знать: дельфи стоит того, чтобы его любить. И не только из-за простоты этого языка. Очень маленькие и очень быстрые программы на дельфи - это возможно! Ты расскажешь об этом всем сомневающимся. И с мнением, что дельфи - язык для ламеров, будет покончено!"
Не получилось только у меня такое приложение маленькое скомпилировать...
Журнал я качал с http://www.wisesoft.ru/ а к журналу прилагается диск и на этом диске есть пример. Если кто-то выписывает журнал, скиньте пример этот. Или может кто читал и разобрался, помогите!
Отправлен: 12.01.2006, 01:36
Вопрос задал: REFERI (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: romodos
Здравствуйте, REFERI!
Ладно, щас напишу тебе в личку. У меня по счастливой случайности есть этот номер и DVD к нему. Очень неплохая статья, кстати. И она заставит всех делфиненавистников молчать.
---------
FAQ me off!
Ответ отправил: romodos (статус: Практикант)
Отправлен: 12.01.2006, 06:28
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Правильно значит я все делал, беда в том что link не хочет компилировать obj - говорит следующее Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

LINK : warning LNK4108: /ALIGN specified without /DRIVER or /VXD; image may not run
HelloWorld.obj : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
А у тебя компилится? Link.exe такой же или другая версия?

Отвечает: sir henry
Здравствуйте, REFERI!
Вы сомневаетесь, что приложения на Дельфи могут быть маленькие? Здесь уже обсуждался этот вопрос. Большой размер приложения возникает исключительно из-за использования VCL. Если использовать только WinAPI или какую-нибудь специализированую библиотеку (например KOL http://bonanzas.rinet.ru) то приложения будут более чем маленькие.
К сожалению диска у меня нет, однако примеры, как писать маленькие программы, Вы можете скачать с указанного сайта.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 12.01.2006, 07:23

Отвечает: D.M.
Здравствуйте, REFERI!

Могу прислать просто минимальную пргограмму (см. приложение)...
Хоть и не из журнала, но тоже из "уважающей" себя книги по Делфям Краснова М.В. "OpenGL в проектах Delphi"

Все с комментами....

Приложение:

---------
Зёзики руллллят :)

Ответ отправил: D.M. (статус: 2-ой класс)
Отправлен: 12.01.2006, 08:43


Вопрос № 33.094
Эксперты помогите (если можно пошпгово) как создать новый класс на основе TString... или чего нить подобного многострочного. Необходимо изменить ментод Create на предмет считывания строк из некоторого файла, добавить метод Read который бы читал определенную строку ну и еще по мелочам - надеюсь из вышеприведенных они сами вытекут... Заранее спасибо !!!
Отправлен: 12.01.2006, 09:24
Вопрос задал: Sniffer (статус: Студент)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: akaDemik
Здравствуйте, Sniffer!
Не знаю, что должно было "вытекать" из приведенных примеров, так как не ясно дальнейшее применение этого объекта. Могу предложить пример "Словаря" (см. пример), который я использовал для преобразования целочисленного кода подразделения в его строковое описание. Описание естественно хранится в файле.
Добавить метод Read будет не сложно (если конечно знать откуда она должна читать и как)... дописываете строку типа
procedure Read(Stream : TFileStream);
Ставите курсор ввода на эту строку и жмете Shift+Ctrl+C, Делфи завршит описание класса и добавит процедуру в раздел implementation, а дальше дело техники.

Приложение:

Ответ отправил: akaDemik (статус: 2-ой класс)
Отправлен: 12.01.2006, 09:40

Отвечает: Jadd
Здравствуйте, Sniffer!
Это получается мы должны за тебя писать этот класс? Нет уж. Могу принцип объяснить, а остальное пиши сам.

TMySuperStringList = class (TStringList)
private
FFileName: String;//содержит путь к файлу
public
constructor Create(FileName: String);
destructor Destroy; ovveride; //берем деструктор суперкласса
.............какие-то методы...............
end;

constructor TMySuperStringList.Create(FileName: String);
begin
if (Length(FileName) > 0) then //за скобы сорри - привычка и не буду ее менять
begin
if (FileExists(FileName)) then
LoadFromFile(FileName); //грузим из файла при наличии такового
end;
end;

Примерно так. Можно юзать TStrings, но поскольку класс абстрактный, его придется реализовывать, что весьма прекрасно сделано в TSTringList'e. Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 12.01.2006, 09:45

Отвечает: sir henry
Здравствуйте, Sniffer!
Может быть лучше не на основе TString, а включить свойство типа TString в Ваш новый класс?
На счет Read непонятно. Нужно читать определенную строку из файла или выдавать на гора определенную строку из TString? Уточните.
Непонятно, зачем нужно включать чтение из файла при создании, ведь у TString есть метод LoadFromFile(), зачем городить дополнительный огород, ведь такой Create не увеличивает функциональность класса, не добавляет какие-то новые возможности?
Надеюсь ответ Вы поймете правильно, т.к. из заданых Вами условий для нового класса не вытекает, что у него будет какая-то дополнительная функциональность по сравнению с TString. Зачем тогда нужен новый класс?
Ответ отправил: sir henry (статус: Академик)
Отправлен: 12.01.2006, 09:59

Отвечает: Zubex
Здравствуйте, Sniffer!
В дополнение вышеприведенных ответов могу посоветовать посмотреть исходники делфийского TMemIniFile.
---------
Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 4-ый класс)
Отправлен: 12.01.2006, 10:48


Вопрос № 33.118
Здравствуйте!
Мне нужно организовать подсветку скрипта используя RichEdit (т.е. сторонние компоненты не предлагать).
Конкретнее о подсветке: Нужно чтобы например: {% текст } <--вот такое выражение красилось в красный цвет, <a текст > красилось синим.
Если можно, алгоритм, как это всё организовать, но лучше код программы
Отправлен: 12.01.2006, 13:11
Вопрос задал: Toxic~Fire (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ujin Antikvar
Здравствуйте, Toxic~Fire!

См. приложение.

TextCol - цвет текста
TagCol - цвет тегов
DopCol - цвет между кавычками ""

Приложение:

---------
"Будущее принадлежит тем, кто верен своей мечте" - Элеонора Рузвельт

Ответ отправил: Ujin Antikvar (статус: 5-ый класс)
Отправлен: 13.01.2006, 19:49


Вопрос № 33.121
Здравствуйте!

Что-то раззадавался вопросами :(

Подскажите, замучился искать :(.

Мне необходимо распаковывать ZIP архивы.
Ранее использовал ZipMaster.
Пользователю НЕ надо знать что это зипы.

Поэтому я "вытаскивал" из ресурса unzip.dll распаковывал файлу и удалял dll'ку. Всё было гуд.

Теперь вышла новая версия ZIP Master'а блин... эта зараза проверяет ПЕРЕД запуском моего приложения (!) что нету dll и не запускается !!!

Как обойтить?

Может чего то там в настройках можно "подкрутить"?

или другую какую нибудь компоненту использовать :( попроще.
Delphi5
Отправлен: 12.01.2006, 13:55
Вопрос задал: LanK (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: sir henry
Здравствуйте, LanK!
ZIP Master'ом не пользовался, поэтому не подскажу как с ним работать.
В стандартной поставке Дельфи есть модуль zlib. Попробуйте с помощью него. Там, вроде как, dll'ка не нужна.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 12.01.2006, 14:19

Отвечает: D.M.
Здравствуйте, LanK!
Есть один хороший компонент EncryptX.ocx....
Он пакует распаковывает, а так же умеет шифровать и много чего еще.....
Весит 38 кб
Если надо, то пиши на autoruner@gmail.com... Вышлю
---------
Зёзики руллллят :)
Ответ отправил: D.M. (статус: 2-ой класс)
Отправлен: 13.01.2006, 11:21


Вопрос № 33.122
Какая была последняя версия BDE? Помогите найти последнюю версию. Нужно что было возможно устанавливать ее отдельно на любой компьютер. Укажите пожалуйста линк. Установке bde вместе с дельфи не предлагать. Заранее благодарен.
Отправлен: 12.01.2006, 14:40
Вопрос задал: Rusland (статус: Специалист)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, Rusland!
BDE уже лет восемь как не модифицируется. Так что свежая версия у всех такая же, как у Вас. :) Отдельно ее нужно скачать с сайта www.borland.com (9 МБ), если там еще ссылка на нее осталась, т.к. она давно признана устаревшей и рекоммендуется вместо нее использовать ADO.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 12.01.2006, 15:07

Отвечает: nimoid
Здравствуйте, Rusland!

БДЕ - дохлый проект. Последнюю версию наверно у борланда на сайте можно качнуть.
---------
Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и вперед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 12.01.2006, 16:07

Отвечает: Vbhjndjhtw
Здравствуйте, Rusland!
http://bolek68.chat.ru/bde_soft.r03
Ответ отправил: Vbhjndjhtw (статус: 8-ой класс)
Отправлен: 13.01.2006, 07:42

Отвечает: akaDemik
Здравствуйте, Rusland!
На ПК с установленным БДЕ ищи файл ..Common FilesBorland SharedBDEdeinst.cab
WinRar'ом извлекаешь из него BdeInst.dll. И что бы установить БДЕ нужно выполнить "REGSVR32 /S BdeInst.dll"

Приложение:

Ответ отправил: akaDemik (статус: 2-ой класс)
Отправлен: 16.01.2006, 09:15
Оценка за ответ: 5
Комментарий оценки:
Спасибо.


Вопрос № 33.150
Уважаемые как сделать так чтоб компонент Timer - показывал на форме
уменьшающеся свое значение.
И еще как сделать часы в заголовке (чтоб они "тикали").
Отправлен: 12.01.2006, 22:23
Вопрос задал: Andrew (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Andrew!
Первый вопрос вообще не понял.
По второму: ставьте у таймера интервал 1000 мс и пишите обработчик OnTimer:
Caption:=TimeToStr(Time);
---------
Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 12.01.2006, 22:37

Отвечает: Jadd
Здравствуйте, Andrew!
Про "уменьшающеся свое значение" стоит только гадать что там зашифровано. Если на OnTimer уменьшать значение некой переменной, то так:

допустим, есть некая переменная myvar := 1000;

тогда

procedure TFormw.Timer1Timer(Sender: TObject)
begin
if (myvar <> 0) then
Dec(myvar);
end;

Насчет заголовка. Делаем так:

ставим Interval := 1000; //одна секунда

и в событии OnTimer для таймера пишем:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Caption := TimeToStr(Now);
end;

Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 12.01.2006, 22:40

Отвечает: Меркулов Алексей
Здравствуйте, Andrew! Часы в заголовке - попробуйте воспользоваться функцией TimeToStr:
MyForm.Caption:=TimeToStr(Now);
Now-возвращает текущее время.

Чтобы показать уменьшающеся значение в процедуру Timer1.Timer пропишите рекруссивную формулу
типа f:=f-1;

Ответ отправил: Меркулов Алексей (статус: 2-ой класс)
Отправлен: 12.01.2006, 22:58

Отвечает: Schmak
Здравствуйте, Andrew!
Создайте глобальную переменную. Перед запуском таймера (напрммер в OnCreate формы) задайте ей нужное значение. В обработчике таймера пропишите уменьшение этой переменной и вывод на экран. Также можно задать условие, чтобы по достижении переменной какого-то значения (напрмер нуля) таймер выключался. Например так:

var t:integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
t:=100;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption:=inttostr(t);
dec(t);
if t=0 then timer1.Enabled:=false;
end;

2)В обработчике таймера напишите
form1.Caption:=TimeToStr(time);
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Практикант)
Отправлен: 13.01.2006, 05:38
Оценка за ответ: 5
Комментарий оценки:
спасибо!

Отвечает: sir henry
Здравствуйте, Andrew!
1) Бросить на форму компонент TLabel (Label1) и заносить в него значение второго таймера, который собственно и будет "тикать". Т.е. первый таймер - главный - будет генерировать основное событие, а второй - вспомогательный - будет производить отсчет времени для индикации. Во втором надо поставить период для изменения значения Label'а. В OnTimer второго таймера будет производится присвоение значения.
2) Часы можно сделать с помощью того-же таймера. Поставить у него период в 1 секунду (минуту) и переписывать Caption формы в OnTimer:
Form1.Caption:=TimeToStr(Time);
Ответ отправил: sir henry (статус: Академик)
Отправлен: 13.01.2006, 07:09


Вопрос № 33.151
Здравствуйте уважаемые эксперты. У меня вопрос: как уничтожить
дочернее окно (MDIChild). Заранее спасибо
Отправлен: 12.01.2006, 22:27
Вопрос задал: Меркулов Алексей (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Меркулов Алексей!

Что значит уничтожить?
Если закрыть, то нужно в процедуре FormClose разрешить его закрыть. См. приложение

Приложение:

Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 12.01.2006, 22:37
Оценка за ответ: 5

Отвечает: Jadd
Здравствуйте, Меркулов Алексей!
Очень просто. Кроме того, что написал эксперт выше, можно закрыть дочернее окно из родительской формы. Делается это так:

Закрываем активный MDIChild:

Form1.ActiveMDIChild.Close;

закрываем все MDIChild:

for i:=0 to Form1.MDIChildCount-1 do
Form1.MDIChildren[i].Close;

Тоже самое можно сделать по какому-то условию. Например, если имя окна NAME. Тогда пишем:
for i:=0 to Form1.MDIChildCount-1 do
begin
if (Form1.MDIChilddren[i].Name = 'NAME') then
Form1.MDIChildren[i].Close;
end;
Т.е. тут безранично сколько вариантов можно перечислить.

Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 12.01.2006, 22:51


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

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

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

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

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


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


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

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

В избранное