Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
19 Июль 2025, 02:48:15
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Delphi как много в этом слове...

Страниц  : 2 3 Далее»  Все   Вниз
  Печать  
Автор Тема: Delphi как много в этом слове...  (Прочитано 11368 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« : 17 Ноябрь 2005, 01:40:47 »

 Начинающие и не только Делфисты! Задавайте свои вопросы и Вас услышат, помогут, подскажут...
Записан


Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #1 : 17 Ноябрь 2005, 01:46:48 »

 Первый вопрос: кто знает - подскажите, как обеспечить правильную работу компонента StatusBar? Пробовал через Timer но что-то не получается. Производится обработка данных, процедура с таймером включается и работает, но процесс выполнения в соответств. компоненте не отображается. Только по окончанию процесса выдается 100%.
« Последнее редактирование: 17 Ноябрь 2005, 01:50:19 от Lanser » Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #2 : 17 Ноябрь 2005, 12:18:31 »

StatusBar1.Panels[0].Text := IntToStr(iProgress);
Что тут может не отображаться???
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #3 : 17 Ноябрь 2005, 12:22:41 »

procedure TForm1.Button1Click(Sender: TObject);
var
 i : integer;
begin
 for i := 1 to 100 do begin
   StatusBar1.Panels[0].Text := IntToStr(i);
   StatusBar1.Refresh;
   sleep(100);
 end;
end;
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #4 : 17 Ноябрь 2005, 12:34:13 »

Вообще жаль но по-моему делфи умирает... если только борланды не продвинут таки Delphi.Net
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #5 : 17 Ноябрь 2005, 15:39:38 »

 А как же Delphi 8? По-моему там есть поддержка .Net, или я что-то путаю.
Записан


vervolf он же Бегемот
Настоящий гродненец
****

Репутация: +60/-2
Offline Offline

Пол: Мужской
Сообщений: 883


сижу, не шалю, починяю примус!

Просмотр профиля
« Ответ #6 : 17 Ноябрь 2005, 17:20:51 »

Есть. Только её не доделали. Я у себя поставил. Поюзал, да и перешёл на 7. Что-то мне не нравиться. Слышал вроде 2005 есть или это также 8?
Записан

we fly!
You die!!!
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #7 : 17 Ноябрь 2005, 18:00:15 »

Топик есть на 2 странице, по 2005 делфи
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #8 : 18 Ноябрь 2005, 13:19:23 »

 Подскажите как создать Alias для связи приложения с MS Excel (необходимо вытаскивать данные из разных листов), а то я что-то подзабыл.
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #9 : 18 Ноябрь 2005, 13:30:55 »

Закладка Servers - компонент ExcelApplication, кидаешь на форму,  и юзай интерфейс Excelя
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #10 : 18 Ноябрь 2005, 14:45:14 »

 Мне нужно связаться с книгой Excel-я и не с одним листом.
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #11 : 18 Ноябрь 2005, 17:51:46 »

ну правильно, что типа
procedure TForm1.Button1Click(Sender: TObject);
var
 wb : _WorkBook;
 ws : _Worksheet;
begin
 ExcelApplication1.Connect;
 try
   ExcelApplication1.Visible[0] := true;
   {wb := ExcelApplication1.Workbooks.Open('d:\test.xls', EmptyParam,
     EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
     EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);}
   wb := ExcelApplication1.Workbooks.Add('d:\test.xls', 0);
   ws := wb.Worksheets.Item[1] as _Worksheet;
   ws.Cells.Item[1, 1] := 'blabla';
 finally
   ExcelApplication1.Disconnect;
 end;
end;
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #12 : 18 Ноябрь 2005, 17:54:36 »

На самом деле метод Open  что то трапается, нет времени смотреть, но на самом деле подключиться к Excелю очень просто, и есть куча способов, с ранним связыванием (как на примере) или поздним, выбирай какой хочешь, а в инете примеров просто вагон
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #13 : 18 Ноябрь 2005, 18:01:07 »

А вот линк нашел, по этой инфе я когда то учился
ИСЧЕРПЫВАЮЩЕ :
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=249
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #14 : 18 Ноябрь 2005, 20:08:15 »

 Спасибо за советы. А есть ли что-либо подобное для Access-a?
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #15 : 18 Ноябрь 2005, 20:43:15 »

Не знаю, конечно, зачем к эксцесу обращаться через оле, если тебе нужно работать с таблицами, запросами вообщем с данными просто используй ADO,  и подключайся к таблицам Access, а вообще Ole сервера есть практически в любых серьезных программах - весь офис, AutoCAD, Corel даже 1с.
Записан

Дурак думает, умный действует по обстоятельствам.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #16 : 19 Ноябрь 2005, 12:38:21 »

Цитировать
procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
begin
  for i := 1 to 100 do begin
    StatusBar1.Panels[0].Text := IntToStr(i);
    StatusBar1.Refresh;
    sleep(100);
  end;
end;


Вместо всяких рефрешей и слипов делается Application.ProcessMessages();

Кидайте вы дельфи, не очень перспективное направление. Я бы не выбирал эту среду для работы.
Записан

Нетолерантный человек.
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #17 : 19 Ноябрь 2005, 17:41:45 »

Цитировать
Вместо всяких рефрешей и слипов делается Application.ProcessMessages();

1. Sleep() тут для задержки, имитирующей какую-то полезную работу. Это ведь пример.
2. Не факт, что Application.ProcessMessages() лучше в каждом конкретном случае. Он делает совсем другое - процессает мессаги, в т.ч. мессагу на отрисовку. При этом может иметь нежелательный побочный эффект - позволит юзеру нажать какую-нибудь кнопку, которую тиснуть не стОит сейчас. Refresh() же, делает только то, что делает :-) Хотя, конечно, при вдумчивом подходе, ProcessMessages() позволяет реализовать всевозможные паузы и канселы, если лень заморачиваться с многопоточностью :-)

Цитировать
Кидайте вы дельфи, не очень перспективное направление. Я бы не выбирал эту среду для работы.
Just offtopic :-)
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #18 : 21 Ноябрь 2005, 13:28:05 »

 Появился еще один вопрос: подскажите, как запустить другое приложение из создаваемого приложения Delphi? Например нужно запустить WinRAR.
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #19 : 21 Ноябрь 2005, 13:41:21 »

Самое тривиальное решение WinExec(), просто запускает приложение винды, также ShellExecute() - можно извратится с параметрами, нужный вид окна или просто открыть Explorer с нужной папкой
и самое продвинутое CreateProcess - позволяет дождаться момента когда процесс отработает, и твоя прога продолжит свою работу только после окончания данного процесса. Все эти апи смотри в MS SDK хелпе, там нормально описано

Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #20 : 21 Ноябрь 2005, 14:14:10 »

Дизайнерский вопрос: изпользование шкурок, как и чем.
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #21 : 21 Ноябрь 2005, 14:25:45 »

Тебе нужно сделать что то типа WinAmp? Тогда
вообще по%%ца придеться Улыбка
Если да смотри в поисковиках "задание окна непрямоугольной формы" - факов по этой теме дофига
Записан

Дурак думает, умный действует по обстоятельствам.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #22 : 21 Ноябрь 2005, 14:59:26 »

Цитировать
1. Sleep() тут для задержки, имитирующей какую-то полезную работу. Это ведь пример.
2. Не факт, что Application.ProcessMessages() лучше в каждом конкретном случае. Он делает совсем другое - процессает мессаги, в т.ч. мессагу на отрисовку. При этом может иметь нежелательный побочный эффект - позволит юзеру нажать какую-нибудь кнопку, которую тиснуть не стОит сейчас. Refresh() же, делает только то, что делает :-) Хотя, конечно, при вдумчивом подходе, ProcessMessages() позволяет реализовать всевозможные паузы и канселы, если лень заморачиваться с многопоточностью :-)


в данном конкретном лучая как раз ProcessMessages самый лучший способ, т.к кроме статус бара еще и форма рефрешнется Улыбка
« Последнее редактирование: 21 Ноябрь 2005, 15:05:53 от Shura » Записан

Нетолерантный человек.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #23 : 21 Ноябрь 2005, 15:08:09 »

Цитировать
Дизайнерский вопрос: изпользование шкурок, как и чем.


советую http://www.delphikingdom.ru/ -  там ответы на все твои вопросы касательно дельфи
Записан

Нетолерантный человек.
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #24 : 21 Ноябрь 2005, 23:38:38 »

Цитировать

в данном конкретном лучая как раз ProcessMessages самый лучший способ, т.к кроме статус бара еще и форма рефрешнется Улыбка

А что, просили рефрешить всю форму? :-) А про нажимания кнопок, которые не предусмотрено нажимать, я уже писал.
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #25 : 22 Ноябрь 2005, 12:29:03 »

 Вот возникла проблемка. Приложение разработано, работает. Приходится обсчитывать динамический массив "в разных направлениях". Но возникает проблема: начинает работать, загружает систему по максимуму и вешает.
Как сделать, чтобы приложение не так сильно сьедала ресурсы?
Записан


Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #26 : 22 Ноябрь 2005, 15:36:58 »

Цитировать
Вот возникла проблемка. Приложение разработано, работает. Приходится обсчитывать динамический массив "в разных направлениях". Но возникает проблема: начинает работать, загружает систему по максимуму и вешает.
 Как сделать, чтобы приложение не так сильно сьедала ресурсы?


как это "вешает"? программа не может вычислениями повесить систему.
вообще все большие вычисления в отделльном потоке выполняй. Можешь ему делать Suspend если хочешь что-то приостановить Улыбка
Записан

Нетолерантный человек.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #27 : 22 Ноябрь 2005, 15:38:25 »

Цитировать
А что, просили рефрешить всю форму? :-) А про нажимания кнопок, которые не предусмотрено нажимать, я уже писал.


Таки нажать на кнопку после одного Application.ProcessMessages ооооочень проблематично. Однако и это можно предусмотреть ... Улыбка
Записан

Нетолерантный человек.
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #28 : 22 Ноябрь 2005, 18:14:29 »

Цитировать
Таки нажать на кнопку после одного Application.ProcessMessages ооооочень проблематично. Однако и это можно предусмотреть ... Улыбка

Таки нажать на кнопку ты можешь в любой момент до ProcessMessages, а она отработает в момент ProcessMessages. Это раз. А два - это то, что таких ProcessMessages будет не 1 а дофига, столько, сколько раз будет меняться статус при какой-то обработке. Так что, жми хоть обожмись :-)
А про предусмотреть я сам писал, перечитай выше.
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #29 : 22 Ноябрь 2005, 18:25:46 »

Цитировать
Вот возникла проблемка. Приложение разработано, работает. Приходится обсчитывать динамический массив "в разных направлениях". Но возникает проблема: начинает работать, загружает систему по максимуму и вешает.
 Как сделать, чтобы приложение не так сильно сьедала ресурсы?

Во-первых да, если ты не выставил сам нарочно HIGH_PRIORITY или (не дай боже) REALTIME_PRIORITY своему процессу, то систему повесить никак не выйдет. А то, что прога, отрабатывая циклы (не работая по событиям, например, по таймеру, прерываниям и т.п.) съедает 100% времени ЦП - что тут удивительного? Как бы компьютеры предназначены для того, чтобы работать, а не простаивать. Вот, например, видеопроигрыватель, тут другое дело. Он должен 25 (например) раз в секунду нарисовать очередной кадр. Если процессор справляется с поставленной задачей за 1/100 секунды, мы видим, что он жрет 25% процессорного времени. Плейер не должен приступать к декодированию следующего кадра как можно скорее после декодирования предыдущего, а то на быстрых тачках не успеешь в сюжет вникнуть :-) Вот он и курит после каждого кадра. Это так, грубо, для наглядности. У твоей же проги стоит задача посчитать данные как можно быстрее, без привязки к реальному времени. И ты что, хочешь, чтобы она тем не менее, не грузила проц на полную? Так не бывает :-)
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Страниц  : 2 3 Далее»  Все   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,174 секунд. Запросов: 19.