Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (до версии 2009) - часть 6

Автор: MoLnuS
Дата сообщения: 02.03.2013 10:11
Графический браузер вида: главная форма (вверху менюшка), открываем рисуночки, каждый появляется в новой форме (дочерней для главной). Думаю, поняли, в чем суть.
В меню имеется пункты "Растянуть", "Сохранить" и тд, которые должны применяться к активной(!!!) дочерней форме. Но у меня они применяются к последней открытой форме (т.к. экземпляр формы создается именно при открытии). Как бы так сделать, чтобы операции над рисунком применялись к рисунка, форма которого в фокусе?

Решал с полгода назад такую же задачу на Си, там решил вот так:
TForm2 *Form2 = (TForm2*) Form1->ActiveMDIChild;
И потом с Form2 успешно работало все. Но в Делфи не могу адаптировать сей код чего-то..=\\\ За более чем месяц каникул забыл все нафик..)
Автор: dsk
Дата сообщения: 02.03.2013 10:38
StalkerSoftware

Цитата:
Есть данные которые находятся в TMemoryStream.
Соответственно мне надо как то в эти параметрах указать сами данные (rgpbToBeSigned) и их размер (rgcbToBeSigned) взятые из TMemoryStream.
Но как их правильно задать я не знаю. Нужна помощь ...

Так пойдет?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
ms:TMemoryStream;
str:String;
i:Integer;
arr:PByte;
begin
ms:=TMemoryStream.Create;
ms.LoadFromFile('c:\1\x.bpl');
arr:=ms.Memory;
for i := 0 to 2 do
str:=str+char(arr[i]);
ShowMessage(str); // выдаст MZP - 3 первых байта в файле
ShowMessage(IntToStr(ms.Size)); // выдаст 32768-размер файла
ms.Free;
end;
Автор: MoLnuS
Дата сообщения: 02.03.2013 16:41
А с моим небольшим вопросиком(см.выше) кто-нибудь подсобит?))
Как же получить активную дочернюю форму...
Автор: dsk
Дата сообщения: 02.03.2013 20:48
MoLnuS

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

Вот так:

Код:
procedure TMainForm.MinMnuClick(Sender: TObject);
begin
if not (ActiveMDIChild = Nil) then
if ActiveMDIChild is TMDIChild then
ActiveMDIChild.WindowState:=wsMinimized; // тут действие с активным окном
end;
Автор: MoLnuS
Дата сообщения: 03.03.2013 06:35
dsk
Находил сее в инетах, но не понял, что оно делает и вообще.

procedure TMainForm.MinMnuClick(Sender: TObject);
TMainForm - родительская форма?
MinMnuClick-?)

if not (ActiveMDIChild = Nil) then
если есть дочерние формы?

if ActiveMDIChild is TMDIChild then
Вообще не понимэ эту строчку.

Следующую вы вроде объяснили..)

А можно ли как-то передать эту дочернюю форму, а не выполнять что-то в процедуре? Функцией там как-нибудь..)

Странно, что в Делфи не одной строчкой, как в Си...)

Добавлено:
Нашел описание всех строк вот здесь.

Спасибо=)
Автор: alex1334
Дата сообщения: 08.03.2013 09:26
Подскажите коллеги
Есть указатель, объявленный как var p1:POINTER.
С помощью byte(p1^) можно получить доступ к байту на который указывает p1
Не знаю как увеличить значение этого указателя чтобы он указывал на следующий байт в памяти
Всякие там PTR() работали на 16 разрядной оси и не применимы для 32р

если объявить указатель как var p1:^byte
то inc(p1,1) работает как нужно но хотелось бы чтобы p1 был как poiner, а тогда inc(byte(p1),1) выдает ошибку
Автор: Frodo_Torbins
Дата сообщения: 08.03.2013 11:03
alex1334
В старых делфях арифметика указателей работает только для PChar.
Автор: Eternal_Shield
Дата сообщения: 09.03.2013 10:26
alex1334

Цитата:
если объявить указатель как var p1:^byte    то  inc(p1,1) работает как нужно но хотелось бы чтобы p1 был как poiner, а тогда inc(byte(p1),1) выдает ошибку

Если память не изменяет, то всегда существовал вот такой способ:
Inc(Integer(P), N);
где P - это (не)типизированый указатель, а N - смещение в байтах.

Что-то мне подсказывает, что это всегда так было, но утверждать не стану.
Автор: alex1334
Дата сообщения: 09.03.2013 19:57
Спасибо всем

var p:pointer

inc(integer(p),n) работает, если N не писать то указатель увеличивается на 1 байт, при n=2 указатель увеличивается на 2 байта...
Автор: alex1334
Дата сообщения: 10.03.2013 15:47
Подскажите - внутри тела процедуры установил оператор

application.ProcessMessages; чтобы система не подвисала при длительной операции

теперь мучают сомнения что система получив управление возвратит управление опять моей проге если я например щелкну кнопкой например закрыть файл (а еще хуже -- открыть новый), так как это в будущем вызовет исключение в процедуре куда будет возвращено управление после application.ProcessMessages
Нужно ли использовать какую нибудь синхронизацию для защиты важных указателей (если так можно сказать)
Автор: topdon
Дата сообщения: 11.03.2013 08:24
Уважаемые коллеги, прошу помощи!
Имеется Делфи МДИ- приложение, главная форма и модуль данных DMForm.
На этой форме ADOConnection и все формы приложения соединяются через него. Все работает.
Вчера стал делать динамическую связь с БД, но обнаружил, что из главной формы я не могу заменить ConnnectionString в дочерней, т.к.
она недоступна (через точку в списке не выдается). Как это может быть и что делать,
т.к. uses-ы все стоят где надо?

В. Фролов
Автор: Frodo_Torbins
Дата сообщения: 11.03.2013 13:36
alex1334
Такая проблема обязательно возникнет. Поэтому Application.ProcessMessages не рекомендуется применять без особой необходимости и без Form.Disable. Вместо этого стоит использовать как минимум курсор с часиками, или что то типа такого: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1169 Но лучше всего выделить длительные действия в отдельный поток.

topdon
То, что не выдается список еще ничего не значит. Попробуйте написать рабочий, по вашему мнению, код и скомпилить его.
Автор: alex1334
Дата сообщения: 11.03.2013 18:36
Frodo_Torbins
Спасибо. За ответ. Хотел сделать чтобы при отображении большого файла в память пользователь уже сразу мог начать с ним работать, что собственно и происходит, можно перемещаться по таблице, править..., как только очередной лист отобразился уже появляется закладка и можно его смотреть, загрузка листа может быть до 5..7 сек всего листов до 50. Но вы меня натолкнули на мысль чтобы не form.disable а попробовать action menedger как нибудь disable.
Хочу попутно спросить если программа которая открыла отображаемый в память файл размером 90МВ аварийно была снята где эти 90МВ повиснут. Надо ли чтобы программа при следующем пуске как то подчистила за собой диск или это возлагается на систему.
Как я понял win XP не использует файл подкачки для поддержки map-файлов
Автор: Frodo_Torbins
Дата сообщения: 11.03.2013 21:42
alex1334
При открытии отображаемого в память файла, можно указать его расположение в файловой системе. Если этого не было сделано, то чистить ничего не надо.
Автор: Xom9in
Дата сообщения: 14.03.2013 18:13
добрый день (вечер или утро), подскажите пожалуйста, возможно ли в делфи создать программу чтобы распознать какой либо графический формат (например wmf) c возможностью его редактирования
Автор: ant0ni02004
Дата сообщения: 14.03.2013 19:56
Xom9in
придётся читать заголовок файла и определять по сигнатуре. посмотрите, например, как это сделано в TMyDBImage
Автор: Frodo_Torbins
Дата сообщения: 14.03.2013 20:55
Xom9in
Если нужны готовые сигнатуры и движок их распознавания, то вам сюда: http://mark0.net/code-tridlib-e.html
Автор: alex1334
Дата сообщения: 16.03.2013 12:40
Подскажите как в F1book компоненте получить число не пустых строк на листе, или номер последней не пустой строки
Автор: MoLnuS
Дата сообщения: 25.03.2013 16:50
Подскажите, пожалуйста, почему свойство Mode компонента MediaPlayer не переходит в mpStopped после окончания воспроизведения? Мелодия закончилась, происходит событие Notify, процедура в нем выполняется только если Mode=mpStopped (мелодия закончилась-играем следующую), а оно всё еще mpPlayed =_____= Что за нафик?
Может я чего не допонимаю или так и должно быть...
Автор: Dmitry
Дата сообщения: 01.04.2013 20:22
Ognev

Цитата:
Отчет о проделанной с FGInt работе.

1) Все в FGInt явно привел к Ansi.
2) Нашел у себя косяк с вычислением приватной экспоненты (засовывал при ее вычислении n вместо функции Эйлера).
3) Использовал для хранения шифрованного-дешифрованного текста не RichEdit.Lines.Text, а глобальные переменные AnsiString.

После этого все заработало! Можно ли FGInt явно не приводить к Ansi не проверял.

Всем большое спасибо за помощь!


Советую пользоваться готовыми библиотеками. Например - cryptlib (http://www.cs.auckland.ac.nz/~pgut001/cryptlib/). Есть интеграция с дельфями

Добавлено:
ant0ni02004

Цитата:
так читайте таблицу(select) в read-only, а редактируйте 1 запись в pessimistic (т.е. в другом adoquery)
и еще - обратите внимание на TBetterAdoDataSet, он получше TAdoQuery будет
и всё-таки - используйте select for update where id=:id


никогда не надо так делать - здорово просядет производительность. к блокировкам нужно подходить осмотрительно. лучше на прикладном уровне подобные проблемы решать - ну там флаг какой-нибудь повесить на запись или еще что-нибудь похожее.
Автор: delover
Дата сообщения: 02.04.2013 10:16
Забавная фича, следующий код:

Код: if (vPeriod.RecNo > 1) and
vPeriod.DataByCell['ACTIVE', vPeriod.RecNo-1] then
begin
Автор: djmix77
Дата сообщения: 18.04.2013 13:48
Добрый день! есть вопрос!

Как на дельфи реализовать прожку

выделение необходимого участка экрана и отслеживание событий на этом участке, точнее если в выделенном фрагменете ничего не проихсодит то всё норм. чуть только поменялось то сигнализирует об этом(и безграничная фантазия как)


спасибо заранее!

Автор: LadyOfWood
Дата сообщения: 18.04.2013 13:52

Цитата:
выделение необходимого участка экрана и отслеживание событий на этом участке, точнее если в выделенном фрагменете ничего не проихсодит то всё норм. чуть только поменялось то сигнализирует об этом(и безграничная фантазия как)

Что подразумевается под изменениями? Просто делать скрины через заданные интервалы времени.
Автор: Grande
Дата сообщения: 23.04.2013 06:25
Уважаемые знатоки, может, кто сталкивался с подобной траблой.
Имеется код:

Код:
qryQuery.Prepare;
qryQuery.Open;
Автор: XPerformer
Дата сообщения: 23.04.2013 06:29
Grande
Какая база данных? какие компоненты доступа?
Автор: Grande
Дата сообщения: 23.04.2013 06:31
XPerformer
PostgreSQL, TZQuery из ZeosDBO.
Автор: XPerformer
Дата сообщения: 23.04.2013 06:40
Grande
цикл не нужен, конечно. С этими компонентами не помогу, не работал с ними

Добавлено:
А демка к ним идет? Она тоже не работает без задержки?
Автор: Grande
Дата сообщения: 23.04.2013 06:52
XPerformer
В демках ничего толкового нет.
Автор: OOD
Дата сообщения: 29.04.2013 13:07
Подскажите пожалуйста есть ли что либо толковое для разработки Delphi под Android?
Автор: LadyOfWood
Дата сообщения: 29.04.2013 17:05

Цитата:
Подскажите пожалуйста есть ли что либо толковое для разработки Delphi под Android?

Пока нет только, толькоо iOS, и не очень толковое. Обещают под Android то не факт что будет толковое.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

Предыдущая тема: MPO File


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.