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

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

Автор: Frodo_Torbins
Дата сообщения: 12.12.2013 10:46
log1stable
Пометьте как-нибудь свои лебелы, чтобы каждый следующий уровень отличался от предыдущего. Хоть теми же тагами.
Автор: ant0ni02004
Дата сообщения: 12.12.2013 11:50
log1stable
вот тоже интересно, почему дерево папок на label сделано...
здесь бы было более уместно TreeView или даже Open/Save Dialog с соотв. настройками (path must exist)
Автор: log1stable
Дата сообщения: 12.12.2013 14:39
Потому что я делаю это не в Делфи, а в Inno Setup. А во-вторых, TreeView, как и OpenDialog, просто не подходит под общий стиль формы, которую я нарисовал.
Автор: Aleksandr N
Дата сообщения: 23.12.2013 08:08
del
Проблему решил...
Автор: Maks150988
Дата сообщения: 12.01.2014 20:18
под вечер мозги кипят. вот есть число 14123,56 и надо отобразить его с пробелом, отделив тысячу от рублей. не хочу велосипед изобретать. работаю без vcl, там есть в функциях формата такая фигня, а как тут. может есть готовое решение? чет в поиске забиваю и не могу найти нужное
Автор: Frodo_Torbins
Дата сообщения: 13.01.2014 11:12
Maks150988
VCL использует FormatFloat.
Автор: ShIvADeSt
Дата сообщения: 15.01.2014 00:01
Maks150988

Цитата:
под вечер мозги кипят. вот есть число 14123,56 и надо отобразить его с пробелом, отделив тысячу от рублей. не хочу велосипед изобретать. работаю без vcl, там есть в функциях формата такая фигня, а как тут.

А чем не подходит функция Insert и проверка на длину строки? Делаем функцию, в которой от конца к началу вставляем пробелы, если длина строки подходит под условие, итпа
if length(s)>6 // 3 символа на дробную часть и 3 символа на сотни
then insert(s, ' ', 7)
if length(s)>10 // 3 символа на дробную часть и 3 символа на сотни
then insert(s, ' ', 11)
и тд до триллионов например.
Суть думаю понятна.
Автор: Vitus_Bering
Дата сообщения: 07.03.2014 06:49
Приходит строка с сервера, как определить имеет ли она кодировку UTF-8?
Автор: exteris
Дата сообщения: 07.03.2014 07:51

Цитата:
Приходит строка с сервера, как определить имеет ли она кодировку UTF-8?

В общем случае никак. Есть функция DetectUTF8Encoding, но она не гарантирует точность определения.
Автор: Vitus_Bering
Дата сообщения: 07.03.2014 08:32
exteris
DetectUTF8Encoding в Delphi 7 есть эта функция?
Автор: exteris
Дата сообщения: 07.03.2014 09:37
Скорее всего нет.
Автор: Frodo_Torbins
Дата сообщения: 07.03.2014 11:59
exteris
По-моему можно использовать какое то АПИ от ИЕ, которое детектит кодировки. Но точность там далеко не 100%.
Автор: Vitus_Bering
Дата сообщения: 07.03.2014 14:19
не предполагал, что это может быть проблемно...
Автор: ant0ni02004
Дата сообщения: 07.03.2014 22:14
Vitus_Bering
на 100% продетектить, конечно, невозможно. тот же ИЕ определяет не по всей строке, а по первым скольки-то там символам (иначе тормоза начнутся). и даже скан всей строки 100% не даст
Автор: samz2000
Дата сообщения: 08.03.2014 19:09
Maks150988

Цитата:
под вечер мозги кипят. вот есть число 14123,56 и надо отобразить его с пробелом, отделив тысячу от рублей. не хочу велосипед изобретать. работаю без vcl, там есть в функциях формата такая фигня, а как тут. может есть готовое решение? чет в поиске забиваю и не могу найти нужное



Код:
// Форматирование строки по шаблону
// http://www.cplusplus.com/reference/cstdio/printf/
// http://ru.wikipedia.org/wiki/Printf
function sprintf (Buffer : PChar; const Format : PChar) : Integer; cdecl varargs; external 'MSVCRT.DLL';
function wsprintf(Buffer : PChar; const Format : PChar) : Integer; cdecl varargs; external 'USER32.DLL' name 'wsprintfA';
Автор: LadyOfWood
Дата сообщения: 19.04.2014 16:31

Цитата:
Приходит строка с сервера, как определить имеет ли она кодировку UTF-8?

Можно посмотреть на наличие BOM в начале. Если BOM нет то задача немного усложляется.
Автор: Hom0Sapiens
Дата сообщения: 15.06.2014 15:16
---del
Разобрался сам.
Спасибо!!!
Автор: relictus
Дата сообщения: 14.07.2014 10:42
Заказчик программы хочет, чтобы она запускалась при старте винды, затем разворачивалась на весь экран без возможности ее свернуть каким-либо способом, а также запретить запуск на компьютере чего-либо, кроме самой программы
Ну, автозапуск сделать легко, а как насчет остального? Это вообще реализуемо на Delphi без использования сторонних специфических программ? Есть какие идеи?
Автор: Frodo_Torbins
Дата сообщения: 14.07.2014 12:22
relictus
Поместите в автозагрузку ланчер, который запустит ваше приложение на новом десктопе: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=70742
Плюс этого метода в том, что он позволяет сделать специальную админскую кнопку, которая даст возможность вернуться на нормальный десктоп после ввода пароля.
Автор: relictus
Дата сообщения: 14.07.2014 15:50
Frodo_Torbins
Большое спасибо за интересную идею!
Автор: Frodo_Torbins
Дата сообщения: 15.07.2014 12:37
relictus
Еще есть вариант подправить "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell", но тогда будут проблемы с возвратом к стандартной оболочке.
Автор: ESV1987
Дата сообщения: 15.07.2014 18:57
у свойства SQL в ADOQuery тип TStrings

Всегда всё было хорошо, но вот столкнулся с тем, что когда я добавляю в него запрос вида
'select ........... where ' + sBuf, где
sBuf - строка переменной длины

при очень большой длине sBuf (например, 85000 символов) TStrings выдаёт какую-то невнятную ошибку

отсюда вопрос: какова длина одного элемента типа TStrings ?

Я знаю, как разбить запрос на элементы (SQL.add (часть запроса); SQL.add (часть запроса); и так далее), но интересно узнать предел TStrings, ведь у типа string в современных версиях делфи размер до 2 ГБ, я думал и у TSrings всё аналогично...
Автор: ant0ni02004
Дата сообщения: 15.07.2014 19:27
ESV1987
а что именно за ошибка, и это точно ошибка именно TStrings, а не ADO?
скорее всего, что выставлено ParamCheck = true и валится именно ADO на парсинге запроса
Автор: ESV1987
Дата сообщения: 15.07.2014 19:34
ant0ni02004
под рукой нет проги, завтра посмотрю
а неявная она потому, что в режиме рантайм она просто зависает, не выдавая ошибки, ошибка только в режиме отладке возникает



а число параметров ограничено? если у меня их в where 6000, к примеру?)
Автор: Frodo_Torbins
Дата сообщения: 15.07.2014 20:44
ESV1987

Цитата:
если у меня их в where 6000, к примеру?)

Похоже вы что то делаете не так. Наверняка эти 6000 параметров можно оптимизировать.
Автор: ESV1987
Дата сообщения: 15.07.2014 21:01
Frodo_Torbins )))

так точно

у меня параметры в духе ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X or ID_X=:ID_X и так далее

а потом я в параметры добавляю сами значения ID_X...

в другом запросе у меня сделано так:
.... where ID_X in (..........)

но это уже без параметров выходит... мне кажется с параметрами надёжнее, вот если подскажете, как сделать второй вариант с in и с параметрами - буду благодарен
Автор: krapotkin
Дата сообщения: 15.07.2014 21:33
ESV1987
делается табличка. возможно временная. туда заливаются все значения и условие выглядит как where ID_X in (Select field1 from TmpTable)
Автор: exteris
Дата сообщения: 16.07.2014 08:10

Цитата:
делается табличка. возможно временная. туда заливаются все значения и условие выглядит как where ID_X in (Select field1 from TmpTable)

+1 за табличку.
И in не нужен. Заменяем на join.
Автор: ESV1987
Дата сообщения: 16.07.2014 08:40
krapotkin
Какой-то слишком радикальный вариант. Вряд ли я могу создать временную таблицу в той БД.

ошибка EOleException 8007000E, т.е., как я и думал, out of memory
Автор: ShIvADeSt
Дата сообщения: 16.07.2014 09:41
ESV1987

Цитата:
Какой-то слишком радикальный вариант. Вряд ли я могу создать временную таблицу в той БД.

Ну у меня в акцезе тоже нет временных табличек (или я их не нашел), но можно сделать таблицу нужного формата, чистить ее перед очередным селектом, заполнять нужными айдишниками и либо через in либо через join, либо через запятую подключаете.
А делать условие с 6000 параметрами - это очень плохо.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

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


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