Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4

Модерирует : ShIvADeSt

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MsdLamer
У стринглиста ненужные строки можно удалять методом Delete

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 22:51 24-07-2008
Narrator

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OdesitVadim

Цитата:
...Можно ещё пару вариантов привести, но сложно гадать на кофейной гуще

Действительно - гадание на кофейной гуще. Проблема решилась. Суть -  2+3<>3+2. Я поменял в dpr порядок(время?) создания формы.
Было...
Код:
 
   ...
   Application.CreateForm(TToolsForm, ToolsForm);
   SplashForm.Hide;
   SplashForm.Free;
   ...
 

Стало...
Код:
 
   ...
   SplashForm.Hide;
   SplashForm.Free;
   Application.CreateForm(TToolsForm, ToolsForm);
   ...
 

Сразу отмечу, в SplashForm нет кода. Интересно то, что ToolsForm не правилась, а просто рос код программы в других местах.  
Проекту уже лет 7 будет. Добавлял новый функционал и при отладке решил некоторые параметры изменить. Обнаружил "чистоту" списков. Что только не делал за 4 последних дня. Собирал на разных машинах, откатывал до начального состояния, перестраивал форму и многое другое... При выяснении причин заметил, что изменение относительного расположения кода в программе влияет на поведение ComboBox и ListBox в ToolsForm.
Причем по порядку создания их на форме. Добивался того, что некоторые начинали работать нормально, а те что в конце  - нет. Было такое, что значения Text в ComboBox устанавливались и отображались, а DropDown списки при этом были пустыми.
 
Вот такая лабуда получается. Теперь сижу и думаю, а где гарантии, что оно в друй раз и в другом месте не вылезет? Какую теорию подвести под практику?    
 
P.S. BDS2006Pro

Всего записей: 17 | Зарегистр. 09-06-2003 | Отправлено: 15:26 25-07-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Narrator
Правило раз:
Без надобности не правь dpr файл.
Правило два:
Если ты всё таки решился править, подумай, а понимаешь ли ты, что же ты делаешь.
 
В делфи до 7 версии включительно, в 2005-2006 и 2007 одно и тоже изменение может давать разные эффекты. То есть имеем три разные пути повидения.
 
Скорее всего у тебя Делфи путалась, какая форма главная. Просто не смогла правильно инициализировать некоторые внутриние структуры.
 
Но если уж лезть в эти дебри, то стоит помнить, что до вызова метода Application.Run приложение не обрабатывает Windows сообщения. Точнее обрабатывает, но крайне избирательно и не стоит надеятся на это. Поэтому, к примеру,  в SplashForm не будет работать таймер и может не обновлятся. Решается просто - вызываем метод Update формы по мере надобности в обновлении.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 16:28 25-07-2008
Narrator

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Без надобности не правь dpr файл.

так не правил же... изначально...  
Повторюсь. Правил код только в MainForm. Вылезло в ToolsForm.

Цитата:
одно и тоже изменение может давать разные эффекты. То есть имеем три разные пути повидения.

Какие изменения и это где-то описано? Ткни, чтоб знал.

Цитата:
Скорее всего у тебя Делфи путалась, какая форма главная.

Чего ей путаться? В свойствах проекта явно задано какая из форм главная. К тому же она первой в dpr создается.  

Цитата:
...до вызова метода Application.Run приложение не обрабатывает Windows сообщения. Точнее обрабатывает, но крайне избирательно

Ну... если следовать этой мысли, то тогда получается, что создание любой формы до Run не гарантированно. Все контролы создаются и работают через виндовые сообщения.
 
 

Всего записей: 17 | Зарегистр. 09-06-2003 | Отправлено: 19:01 25-07-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Narrator
Попробуйте свою прогу под EurekaLog погонять, можно даже под триальной версией. Уверен, узнаете о своей проге много нового.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 20:30 25-07-2008
SZap



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые, помогите пожалуйста...
Задача в следующем:
Есть некое приложение (написанное ранее на Delphi) состоящее из нескольких окон на которых располагаются компоненты PageControl, Panel ну и т.д. с данными...
Необходимо написать утилиту для изменения некоторых свойств компонентов (Visible, Align, Enabled) в этом приложении в run-time.
Саму форму я нахожу без проблем, точнее hWnd, а что и как делать дальше не понимаю,( Как прочитать и изменить свойства компонентов в другом приложении?

Всего записей: 145 | Зарегистр. 19-11-2003 | Отправлено: 22:41 25-07-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SZap
По большому счету никак. Можно изменить только то, что контролируется вин. сообщениями.
Хотя если прога использует рантайм пакеты, может и удастся как нибудь к ней подцепится.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 11:15 26-07-2008
SZap



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что такое рантайм пакеты? Программа написана с использованием стандартных компонентов Delphi...

Всего записей: 145 | Зарегистр. 19-11-2003 | Отправлено: 15:52 26-07-2008
lerthe61

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SZap
Изменять свойства при помощи классов VCL можно устроить, но это сложно.
Гораздо проще делать все то же используя просто WinAPI. Для того, что бы узнать какое сообщение надо послать что бы изменилось то или иное свойство, достаточно глянуть в саму реализацию VCL.
P.S. Я где-то в интернете встречал подобие библиотеке VCL, но там объекты можно было привязывать к уже созданным примитивам Windows (будь то кнопка или листбокс).
P.P.S. Runtime package  - пакеты (обычно bpl) которые представляют собой библиотеки классов или функций используемых в программе. Подмена этих библиотек обычно представляет собой написание "обертки" над оригинальной библиотекой и обычно используется для изменения уже готов программ, код которых недоступен. Обычно такое решение занимаем много времени для реализации.

Всего записей: 74 | Зарегистр. 04-05-2007 | Отправлено: 16:21 26-07-2008 | Исправлено: lerthe61, 16:24 26-07-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SZap
Сюда загляните: Основы работы с Win API в VCL-приложениях, особенно на определенные в делфи сообщения. Ну и сюда тоже: Работа с контролами чужого приложения.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 18:12 26-07-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Возникла необходимость выцепить всю таблицу маршрутизации. Не подскажите как это можно сделать?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 19:47 26-07-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
route print >myfile.txt  
а потом отпарсить его, как хочешь.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:49 27-07-2008
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Narrator

Цитата:
Действительно - гадание на кофейной гуще. Проблема решилась. Суть -  2+3<>3+2. Я поменял в dpr порядок(время?) создания формы.  
Было...
Код:  
   ...  
   Application.CreateForm(TToolsForm, ToolsForm);  
   SplashForm.Hide;  
   SplashForm.Free;  
   ...  
 
 
Стало...
Код:  
   ...  
   SplashForm.Hide;  
   SplashForm.Free;  
   Application.CreateForm(TToolsForm, ToolsForm);  
   ...  
 
 
Сразу отмечу, в SplashForm нет кода. Интересно то, что ToolsForm не правилась, а просто рос код программы в других местах.  

 
 
Что бы сказать что-то конкретное надо больше кода, но и так ясно что указанные коды не равнозначны, пример в первом коде SplashForm теряет фокус ввода, а во втором нет, соответствующие события тоже не посылаются.
Намек - нельзя рассматривать порядок открытия/закрытия форм без анализа генерируемых и обрабатываемых сообщений, особенно взаимосвязанных.
Не гадайте на кофе, просто проанализируйте код, я думаю когда найдете в чем дело поймете, что делфи не причем.
 
 
Добавлено:
Narrator

Цитата:
Непонятное поведением Combobox и Listbox в одной из форм программы - пустые списки на этапе выполнения.  Причем, у формы есть как заполненные в дизайнере значения Items, так и формируемые при создании формы. Если в отладчике проследить заполнеие или сформировать Messagebox с текстом значений Items, то все нормально.  Когда же форма выводится на екран, все списки пустые

 
Сталкивался с подобным, удалял все вспомогательные/настроечные  файлы проекта, например *.dsk, и "Build Project".

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 18:16 27-07-2008
mvictor71



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет
Вопрос к тем кто имеет опыт написания COM,Activex и т.д.
 
Можна ли, и если да, то как, определить метод с параметрами по умолчанию ??
 
В typelibe редакторе для параметра можна выставить [optional] [default]. Но, скоко я не экспериментировал на результирующий _tlb это никак не влияет
 
Есть какие нибудь мысли ?

Всего записей: 289 | Зарегистр. 15-02-2005 | Отправлено: 22:10 27-07-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
route print >myfile.txt  
а потом отпарсить его, как хочешь.

Дык блин и в этом проблема. Фиг знает каким боком парсить... Но задача примерно такова. Из всего этого месива мне нужны только все постоянные маршруты с их сетевыми адресами и маской сети если она есть.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 23:21 27-07-2008 | Исправлено: Maks150988, 23:30 27-07-2008
unni



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Парсить можно при помощи: TRegExpr старого такого модуля, либо регулярными выражениями .Net.
 
А вообще можно было глянуть внутрь pe-шника и увидеть:

Код:
 
            iphlpapi.dll
               76D55B3B    1B   GetBestRoute
               76D543F6     4   AllocateAndGetIpForwardTableFromStack
               76D578C1     E   DeleteIpForwardEntry
               76D5B05C     3   AllocateAndGetIpAddrTableFromStack
               76D57813     A   CreateIpForwardEntry
               76D542A3    27   GetIpAddrTable
               76D5417E     2   AllocateAndGetIfTableFromStack
 
            USER32.dll
               77D5E0D7    31   CharToOemBuffA
 
            WS2_32.dll
               71A912F8  Ordinal    11
               71A9401C  Ordinal    12
               71A941DA  Ordinal   115
               71A912A7  Ordinal     8
               71A92BBF  Ordinal    52
 
            MSWSOCK.dll
               71A451F3    1A   inet_network
               71A45158    19   getnetbyname
 

Всего записей: 31 | Зарегистр. 12-09-2006 | Отправлено: 23:30 27-07-2008 | Исправлено: unni, 23:34 27-07-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
О, нашел на забугорном форуме и сделал пример.=)
 
Подробнее...
 
Однако это тупо в лоб сразу все маршруты, а нужны именно постоянные. Нет ли спооба?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 00:15 28-07-2008 | Исправлено: Maks150988, 01:52 28-07-2008
MsdLamer

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста как обрезать в текстовом файле длину строк до одного слова, и в конце оставщегося слова добавить ;.
Например:
есть текст:
Иван ПетроВ
Сергей Коновалов
Саша Пупкин
и.т.д.
а должно остаться:
Иван;
Сергей;
Саша;
и.т.д
Спасибо.

Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 10:14 28-07-2008
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MsdLamer
 
Зайди на сайт Королевство Делфи http://www.delphikingdom.com/ ,  
там есть раздел для новичков и лабораторным работам.




У нас для этого есть Паскаль типовые задачи прибитая.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 10:23 28-07-2008 | Исправлено: ShIvADeSt, 10:36 28-07-2008
MsdLamer

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хорошо спасибо. Пойду схожу...)))

Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 10:27 28-07-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru