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

» Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)

Автор: relictus
Дата сообщения: 10.03.2010 15:02
volser
Брякается правильно.
А вот такое

Цитата:
Может быть проблема с неправильными символами перевода каретки.

было! Уж не знаю как так получилось, но при просмотре одного исходника в Notepad++ с включенным отображением спецсимволов заметил, что вместо 0D0A (перевод строки) несколько раз было только 0A! Пофиксил и о, чудо! Заработало! Век живи - век учись!
Автор: spasius
Дата сообщения: 16.03.2010 21:48
Ищу работающий алгоритм/компонент для генерации каптчи (captcha). Может кто встречал?
Автор: Vostrikovskiy
Дата сообщения: 17.03.2010 00:09
Delphi 2010 открывает файлы в TIFF формате, но, как я понял. не позволяет в нем сохранять.

Автор: mdid
Дата сообщения: 17.03.2010 13:21
spasius
ложите на форму image...генерите случайные символы...отображаете их в канвасе..и картинку сохраняете..или рисуете на форме все что надо(с компонентами) а потом что то типа

Код:
b:TBitmap;

b:=TBitmap.Create;
b.Width:=Form1.Width;
b.PixelFormat:=pf24bit;
b.Height:=Form1.Height;
b.Canvas.CopyRect(Form1.ClientRect, Form1.Canvas, Form1.ClientRect);
b.SaveToFile('c:\1.bmp');
b.Free;
Автор: spasius
Дата сообщения: 17.03.2010 13:27
mdid
Спасибо )
Капчу делаю под ISAPI. Этот вариант конечно рассматривался но на крайний случай. Больше интересует наличие компонентов, или готовых алгоритмов под Дельфи с эффектами и прочим.
Автор: mdid
Дата сообщения: 17.03.2010 13:50
блина во народ ленивый пошел...там же 10 строк написать..с эффектами?типа какого то шума или линий?ну не 10 а 20 строк
Автор: spasius
Дата сообщения: 17.03.2010 14:47
mdid
да нет, не ленивый. сломали у народа капчу, теперь в поисках чего нить существенного.
Автор: mdid
Дата сообщения: 17.03.2010 15:51
а кто вам мешает допустим вместо "1" ставить дерево..или вместо тройки кота скрюченного?...а вообще была в мое детство книжка...и там алфавит был в виде человечка который выгибался..можно в этом направлении копнуть...тоесть заменить цифры на людей животных или ростения...в сочитании с шумом и линиями я думаю сломать такое будет напряжно
или просить юзеров выбирать цифры(или буквы) рядом с которым есть какой то объект...кот пес..хз..что угодно...хотя я думаю такое будет легче сломать
Автор: Davemus
Дата сообщения: 22.03.2010 15:49
При установке свежей версии Indy выскакивает ошибка: [DCC Error] IdURI.pas(466): E2003 Undeclared identifier: 'WideCharIsInSet'
Может кто подскажет что за фрукт WideCharIsInSet ?
WideCharSet и WideCharIsInSet - между ними есть что общего?
Автор: Medium
Дата сообщения: 22.03.2010 22:29
Присоединяюсь к вопросу о WideCharIsInSet.
Сегодня скачал Indy v.10.5.7. При попытке компиляции пакета IndyProtocols140.dpk в файле IdURI.pas действительно ругается на данную функцию.
Нигде больше в исходниках Indy ссылок на нее нет. Гугл молчит.
Проверил в старой версии Indy - 10.5.5 - там в этом месте была функция CharIsInSet (стандартная делфийская).
По всей видимости, очередной косяк разработчиков.
Автор: Bazzill
Дата сообщения: 22.03.2010 22:32
Подскажите, в D2009-2010 уникодный символ всегда строго двум байтам равен или возможна ситуация когда больше двух байт?
Автор: Frodo_Torbins
Дата сообщения: 22.03.2010 22:44
Bazzill
В зависимости от того, какого типа у вас строка. И плюс не стоит забывать про суррогатные пары.
Автор: psa1974
Дата сообщения: 23.03.2010 00:08
Davemus
Medium

Цитата:
к вопросу о WideCharIsInSet

Скачивал Indy v.10.5.7 с SVN 8 марта - ревизию 4105... Нигде никакого упоминания ф-ции 'WideCharIsInSet'. Не знаю как насчет работоспособности, но все установилось идеально.
В последней ревизии 4148 эта ф-ция действительно упоминается без какого-либо объявления... Впервые она появилась в ревизии 4146. Так что юзайте ревизию 4145 и старше (в смысле более древнюю)...
Автор: Medium
Дата сообщения: 23.03.2010 01:37
psa1974
Спасибо за информацию. Если еще подскажешь, где скачать предыдущие ревизии (в частности, 4145 и старше) - буду признателен вдвойне.
Версию 10.5.7 ревизии 4148 брал здесь: hxxps://svn.atozed.com:444/svn/Indy10/.
Но ссылок на предыдущие там нет.
Автор: Davemus
Дата сообщения: 23.03.2010 06:06
psa1974
Medium

Сегодня погуглил : http://forums2.atozed.com/viewtopic.php?f=7&t=4175
http://forums2.atozed.com/viewtopic.php?f=7&t=4162

Надеюсь что скоро пофиксят этот баг. А пока закомментировал строки следующим образом:

if {WideCharIsInSet(UnsafeChars, LChar) or} (Ord(LChar) < 33) or (Ord(LChar) > 128) then

if {WideCharIsInSet(UnsafeChars, LChar) or} (Ord(LChar) < 32) or (Ord(LChar) > 127) then

Но это конечно не самый лучший вариант.
Автор: psa1974
Дата сообщения: 23.03.2010 07:37
Medium

Цитата:
Если еще подскажешь, где скачать предыдущие ревизии

Я качал с репозитория клиентом SVN - прогой TortoiseSVN...
Примерный алгоритм описан здесь: http://kvendi.pp.ru/?p=66 Все делать как там указано, только в окне TortoiseSVN->Экспорт указать не "ведущая ревизия (HEAD)", а требуемая...
Ну или могу выложить уже скачанную ревизию 4105...
Автор: Medium
Дата сообщения: 23.03.2010 10:07
psa1974

Цитата:
Ну или могу выложить уже скачанную ревизию 4105...
Выложи, пожалуйста. Спасибо
Автор: psa1974
Дата сообщения: 23.03.2010 11:29
Medium
Indy 10.5.7.4105
Indy 10.5.7.4145
P.S. на всякий напомню, что перед установкой надо тщательно вычистить старую Инди...
Автор: Medium
Дата сообщения: 23.03.2010 11:44
psa1974
Большое спасибо
Автор: Bazzill
Дата сообщения: 23.03.2010 16:00
Frodo_Torbins

Цитата:
В зависимости от того, какого типа у вас строка. И плюс не стоит забывать про суррогатные пары.


Можно по-подробнее и по первому и по второму моменту?

Ведь по идее, WIDE это 2 байта, и даже в справке написано, что в Win используется только двух-байтовая схема.

Кодировка этого Unicode - UTF16, а значит два байта.

Хотелось бы разобраться с этим вопросом.
Автор: psa1974
Дата сообщения: 23.03.2010 16:32
Bazzill
Delphi в мире Юникода, часть I: что такое Юникод, зачем он Вам нужен и как с ним работать в Delphi?
Автор: Bazzill
Дата сообщения: 23.03.2010 17:38
psa1974

Ты знаешь, там много чего написано про то как переходить на Unicode версии Delphi.

Мне бы изначально знать, будет ли символ всегда двухбайтовым в памяти или нет. А уж потом думать, переходить мне на Unicode или нет.

В разных местах по-разному пишут.
Автор: psa1974
Дата сообщения: 23.03.2010 18:52
Bazzill

Цитата:
Мне бы изначально знать, будет ли символ всегда двухбайтовым в памяти или нет. А уж потом думать, переходить мне на Unicode или нет.

Если сказать кратко - нет, не всегда символ будет двухбайтовым. Все зависит от используемого способа представления юникода. Например, в UTF-8 символы с номером меньше 128, при записи превращается в обычный текст ASCII (т.е. ангельские символы - однобайтовые, национальные - двухбайтовые).
Читай сюда: http://ru.wikipedia.org/wiki/Юникод (читать все равно много придется )
Автор: Bazzill
Дата сообщения: 23.03.2010 19:00
psa1974

Это понятно, что читать много придеться.

Вот ты пишешь про UTF-8, но ведь в Delphi по-умолчанию UTF-16 используется.

А это значит, что если я кодировку менять не буду, то символы всегда двухбайтовые будут, правильно?


Мало ли какой софт люди пишут, не все же с файлами работают и парсят их, определять в какой они кодировке.
Автор: psa1974
Дата сообщения: 23.03.2010 19:59
Bazzill

Цитата:
Вот ты пишешь про UTF-8, но ведь в Delphi по-умолчанию UTF-16 используется.

Прошу прощения, сперва я тебя не так понял

Да, если использовать тип string (который на самом деле есть UnicodeString, который есть старый добрый WideString но с подсчетом ссылок), символы в памяти всегда будут двухбайтовые. Об этом достаточно прозрачно написано в первой предложенной мной статье, которую ты поленился почитать.


Цитата:
Мало ли какой софт люди пишут, не все же с файлами работают и парсят их, определять в какой они кодировке.

Способ представления юникода (UTF-8, UTF-16 и пр.) определяется преамбулой (заголовком, BOM) файла (в Дельфи есть для этого штатные средства)... Проблема возникает, если файл, записанный в юникоде, не имеет преамбулы, что в принципе возможно и часто бывает...
Например, если сохранить строку "Delphi в мире Юникода, часть I. Что такое Юникод, зачем он Вам нужен и как с ним работать в Delphi" в файл в UTF-8 с преамбулой и без нее и попытаться загрузить этот файл в тот же стринглист, то в первом случае длина текста будет правильная - 98 символов, а во втором - полный бред длиной 161 символ... Но каждый символ в памяти будет занимать ровно 2 байта.
Автор: Frodo_Torbins
Дата сообщения: 23.03.2010 22:12
Bazzill
Про суррогатные пары тут: http://ru.wikipedia.org/wiki/UTF-16 В делфи с ними можно работать с помощью класса TEncoding.
Автор: Bazzill
Дата сообщения: 23.03.2010 22:14
Ok.

Всем спасибо за ответы.
Автор: AlexCoRu
Дата сообщения: 23.03.2010 22:14
psa1974, есть ссылки и прямее ), обновляются через 2-3 дня
http://indy.fulgan.com/
ftp://indy.fulgan.com/
В шапку, чтоб лишних вопросов не было!
Автор: Medium
Дата сообщения: 23.03.2010 23:38
Поставил Indy v.10.5.7 Rev.4145. Полет пока нормальный, спасибо.
Старые баги поправили, новые добавили

Новая проблема всплыла. Пользует ли кто старые компоненты XL Report от, увы, приказавшей долго жить AfalinaSoft. Может есть портированная версия под Delphi 2010?

У меня есть какая-то самопальная (не моя) версия, портированная под D2009. Найдена на просторах ru-board. Устанавливается и частично в D2010 работает, но половину отчетов выдает полупустыми с мусором в отдельных ячейках.

добавлено
В общем, вопрос по XL Report снят. Стоит спросить, как сам находишь решение . Может это еще кому облегчит жизнь.
У компонента TxlReport в свойстве DataExportMode надо обязательно указывать вместо xdmDDE - xdmVariant. И будет вашему отчету счастье.
Если кому понадобится портированный и рабочий под D2010 XLReport - обращайтесь
Автор: snike555
Дата сообщения: 24.03.2010 07:23
Medium
к компонентам XL Report для делфи 2009-2010 обычно идет инструкция по переносу и там этот момент указан. Я решал так: искал тотал-командером dfm с xdmDDE, затем открывал эти dfm как "текст" в среде и заменял автозаменой, в общем с этим компонентом при переходе на делфи 2010 каких-то проблем небыло!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: Установка копоненты ZipTV


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