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

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

Автор: Bonivur
Дата сообщения: 24.06.2010 21:15
Aleksandr N

Цитата:
Да, подходит. Но имена файлов могут оказаться и в виде слов. Тогда этом метод не подойдет. Как в этом случае?

Если имена файлов будут в виде слов, то сортируй их отдельно, а потом вставь снизу списка остальных файлов.
Автор: data man
Дата сообщения: 24.06.2010 21:52
Aleksandr N
В Jedi Code Library, в модуле JclStrings.pas есть функции CompareNatural*
Они сравнивают строки с учётом того, что в них могут быть цифры.
Может они и подойдут.
Автор: Aleksandr N
Дата сообщения: 24.06.2010 22:20
Frodo_Torbins
Bonivur
На худой конец буду так делать.
data man
Посмотрю.

P.S. Умные мысли приветствуются.
Автор: ShIvADeSt
Дата сообщения: 25.06.2010 02:03
Aleksandr N
ИМХО сам создаешь себе лишнюю головную боль. Создай два списка - где имена начинаются с цифры и где с не цифрыю Отсортируй каждый отдельно и потом слей в один. Это уменьшит число проверок на начало с цифры и ускорит сортировку. Строки с цифрами я бы сортировал примерно так

Код:
procedure MinMax(var Min, Max:string);
var
i,j, Code:integer;

begin
val(Min,i,Code);
val(Max,j,Code);
if i>j then Swap(Min,Max);
end;
Автор: Aleksandr N
Дата сообщения: 25.06.2010 11:14
ShIvADeSt
Наверное так и придётся. Спасибо.
Автор: YuriyRR
Дата сообщения: 25.06.2010 14:20

Цитата:
Aleksandr N

Цитата:
Каким образом можно привести список к виду:


Создавать файлы
01
02
...
09
10
11
и т.д.
Автор: Aleksandr N
Дата сообщения: 25.06.2010 16:27
YuriyRR
Оригинально, а главное свежо.
Автор: A_V
Дата сообщения: 26.06.2010 12:04
Aleksandr N
AFAIR AnsiCompareStr как раз именно так и сравнивает.
и TStringList использует для сортировки как раз его
Автор: EugeneBoss3
Дата сообщения: 27.06.2010 02:24
Знатоки, подскажите, плиз, как по таймеру задержать отрисовку компонента? Например, если курсор мыши на компоненте -> изменить цвет Caption через 500 ms
Автор: Frodo_Torbins
Дата сообщения: 27.06.2010 13:48
EugeneBoss3
Когда курсор окажется над компонентом запустить таймер. В таймере поменять цвет надписи и отключится.
Автор: Man_Without_Face
Дата сообщения: 30.06.2010 14:16
Всем привет. Есть форма на ней две кнопки: первая запускает процедуру формирования, вторая закрывает форму (Close;). При формировании, кнопка закрытия формы не работает (как бы сделать отмену формирования и закрыть форму). Подскажите как сделать (что то слышал про потоки, но не думаю что разберусь).
Автор: volser
Дата сообщения: 30.06.2010 15:36
Man_Without_Face
Можно сделать с помощью флага. Кнопка закрытия устанавливает какой то флаг. Процедура формирования проверяет этот флаг, если установлен прервать выполнение процедуры. Для того что бы нажималась сама кнопка закрытия нужно в цикле процедуры формирования писать Application.ProcessMessages.
Автор: Man_Without_Face
Дата сообщения: 30.06.2010 15:50

Цитата:
Application.ProcessMessages.

Это есть...
А про флаги если можно поподробнее как сделать или где можно прочитать? Спасибо.


Добавлено:
Сделал так: на отмену присваиваю переменной значение, напр. 1. При формировании в цикле проверяю переменную, если =1 тогда exit. Вроде работает, но правильно ли это?
Автор: Frodo_Torbins
Дата сообщения: 30.06.2010 21:15
Man_Without_Face
Все правильно, volser вам как раз об этом варианте и говорил. Только проследите, чтобы никакие левые кнопки нажать нельзя было, например кнопку закрытия формы.
Автор: Sashunya79
Дата сообщения: 03.07.2010 14:40
Ребят помогите! Веб серверу методом POST нужно послать высылать файл yyy.gz .
Т.е. структура POST запроса должна быть вида:

Код:
-----------------------------15890672924370
Content-Disposition: form-data; name="backup"; filename="yyy.gz"
Content-Type: application/x-tar

<сам файл>

-----------------------------15890672924370--
Автор: SIgor33
Дата сообщения: 05.07.2010 16:13
Подскажите, как в MDI лучше сделать к каждому экземпляру окна свой экземпляр датамодуля (чтобы не бросать компоненты на каждое окно)?
Автор: Frodo_Torbins
Дата сообщения: 05.07.2010 16:29
SIgor33
Создать базовый класс дочернего окна и наследовать остальные от него?
Автор: Bonivur
Дата сообщения: 05.07.2010 17:53
Есть форма, на ней компонент PageControl. На первой Page - Image. Надо сделать так, чтобы при нажатии на остальные вкладки этот Image на них присутствовал. Делать копии этого компонента и пихать на каждую вкладку - не вариант. Пробовал делать

Image1.Parent := PageControl1.ActivePage;

работает, но при переходе между вкладками периодически изображение "моргает". Есть ли способ избавиться от этого артефакта?
Автор: Frodo_Torbins
Дата сообщения: 05.07.2010 19:52
Bonivur
Установите каждому табшиту DoubleBuffered=True (оно public).
Цитата:
Делать копии этого компонента и пихать на каждую вкладку - не вариант.
Это из за расхода ресурсов? Так ведь почти все классы, реализующие поддержку графических форматов, используют наследников TSharedImage. Другое дело, что мигать все равно будет.
Автор: Bonivur
Дата сообщения: 05.07.2010 22:00
Frodo_Torbins

Цитата:
Установите каждому табшиту DoubleBuffered=True (оно public).

Установил. Если не применять темы, то помогает. С темами - нет, только чуть уменьшает мигание. Причем как-то странно все это - 5 раз понажимаешь вкладки - мерцания нет, а потом - РАЗ! и моргнет. Почему тогда каждый раз не мигает? Где собака порылась?
Автор: SIgor33
Дата сообщения: 06.07.2010 08:43
Frodo_Torbins

Цитата:
Создать базовый класс дочернего окна и наследовать остальные от него?

Примером не богат, чтобы посмотреть как грамотно сделать
Автор: Frodo_Torbins
Дата сообщения: 06.07.2010 12:32
Bonivur
Цитата:
С темами - нет, только чуть уменьшает мигание.
Тогда в дополнение к DoubleBuffered еще уберите стиль csParentBackground у каждого табшита:
Код: TabSheet1.ControlStyle := TabSheet1.ControlStyle - [csParentBackground];
Автор: Bonivur
Дата сообщения: 07.07.2010 00:11
Frodo_Torbins

Цитата:
Тогда в дополнение к DoubleBuffered еще уберите стиль csParentBackground у каждого табшита:
Код:TabSheet1.ControlStyle := TabSheet1.ControlStyle - [csParentBackground];

Я так понял, что это надо в Create формы вставить?

Код:
for i := 0 to PageControl.PageCount - 1 do
PageControl.Pages[i].ControlStyle := PageControl.Pages[i].ControlStyle - [csParentBackground];
Автор: Man_Without_Face
Дата сообщения: 07.07.2010 10:55
Доброго времени суток. Есть переменная с суммой (например 2552) и переменная с минимальной купюрой (например 10). Нужно в Delphi или в Sql запросе округлить сумму до минимальной купюры (итог 2550).
Автор: ShIvADeSt
Дата сообщения: 07.07.2010 11:00
Man_Without_Face

Цитата:
Доброго времени суток. Есть переменная с суммой (например 2552) и переменная с минимальной купюрой (например 10). Нужно в Delphi или в Sql запросе округлить сумму до минимальной купюры (итог 2550).

Div тебе в помощь, что то типа
y = (Sum div MinCupura) * MinCupura;
Автор: Man_Without_Face
Дата сообщения: 07.07.2010 11:12
ShIvADeSt
ок, спасибо. Но а если сумма будет 12,126; мин. купюра 0.01. Тогда получаем 12,12, а не нужные 12,13? Может какие-нибудь функции есть?


Добавлено:
округление должно быть или в большую или в меньшую сторону
Автор: greenpc
Дата сообщения: 07.07.2010 13:33
Man_Without_Face
Trunc((sum/mincup)) * mincup
или Trunc((sum/mincup)+0.5) * mincup // для ваших примеров
както так (см. так же ф-ция round, math.roundto)
ну и в качестве дополнения
_http://www.delphikingdom.com/asp/viewitem.asp?catalogID=1217
_http://www.sql.ru/forum/actualthread.aspx?tid=412838
Автор: Man_Without_Face
Дата сообщения: 07.07.2010 14:13
greenpc Спасибо большое.

Цитата:
Trunc((sum/mincup)+0.5) * mincup
Так правильно.
Вроде все нормально работает, но статейки тоже почитаю.

Автор: Frodo_Torbins
Дата сообщения: 07.07.2010 18:49
Bonivur
На счет OnCreate не уверен, на всякий случай проверьте в рантайме вдруг сбрасывается. Вообще демку бы, так как у меня все работает без мелькания.
Автор: Maks150988
Дата сообщения: 07.07.2010 21:22
Всем доброго времени суток. У меня такой нубский вопрос, вот сколько программирую в свободное время, не задумывался как-то. Допустим есть примерный код:


Код:
if ((hToolTip <> 0) and IsWindowVisible(hToolTip)) then

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

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


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