Вверх ↑
Этот топик читают: Гость
Ответов: 207
Рейтинг: 14
#1: 2020-09-17 20:49:14 ЛС | профиль | цитата
Мод компонентов dbMySQL, dbMySQL_Exec, dbMySQL_Query.

Что сделано:
1 Теперь все ошибки (так как и должно быть с кодом и описанием) выводятся в dbMySQL onError.
2 Добавлена точка InsertId в dbMySQL_Query и dbMySQL_Exec Которая содержит ID, сгенерированный последней операцией INSERT.
3 Удалены точки onError из dbMySQL_Query и dbMySQL_Exec (Все ошибки выводятся в dbMySQL onError)
4 В dbMySQL_Query и dbMySQL_Exec onResult добавлена выдача в поток количество изменённых полей. Событие происходит всякий раз при успешном выполнении запроса к базе данных (Теперь корректно)

Архив для стандартного компилятора - https://forum.hiasm.com/getfile/39139
Архив для компилятора от Netspirit. - https://forum.hiasm.com/getfile/39140
Архив с libmySQL.dll и libmysql-64.dll - https://forum.hiasm.com/getfile/39138

Установка:
1 Заменить файлы - hidbMySQL.pas, hidbMySQL_Exec.pas, hidbMySQL_Query.pas, MySQL.pas и mysqllib.pas в HiAsm\Elements\Delphi\code\
2 Заменить файлы - dbMySQL.ini, dbMySQL_Exec.ini и dbMySQL_Query.ini в HiAsm\Elements\Delphi\conf\

Редактировалось 4 раз(а), последний 2020-09-27 17:55:47
карма: 2

0
Ответов: 4628
Рейтинг: 749
#2: 2020-09-18 12:46:02 ЛС | профиль | цитата
Joiner писал(а):
некорректно работает с юникодом
Мои - работают? Если да - с помощью TotalCommander сравни мои файлы с официальными: увидишь различия. Внеси различия в свои модифицированные. Или сразу свои изменения внеси в мои файлы.
карма: 26

0
Ответов: 207
Рейтинг: 14
#3: 2020-09-18 14:13:03 ЛС | профиль | цитата
Netspirit писал(а):
Мои - работают?

Нет, c FPC-32U не работают. Даже соединение с базой не получалось, это меня и сподвигло вывести ошибки и разобраться в чем дело.
Отличия в пакетах лишь в ToString и Share.ToString.
После ряда изменений, соединение уже есть. И даже в базу инсертит через dbMySQL_Query, но не все.
FPC-64 и FPC-64U - понятно, что работать не будут (libmysql.dll 32 bit) . Хватило б работающего и FPC-32U.
карма: 2

0
Ответов: 4628
Рейтинг: 749
#4: 2020-09-18 17:03:02 ЛС | профиль | цитата
В mysqllib.pas надо тип PChar заменить на PAnsiChar. В компонентах добавить свойство для выбора кодировки соединения (Auto, ANSI, UTF-8). При установке соединения в коде вызвать mysql_set_character_set() или mysql_options() для установки кодировки соединения. Выполнять преобразования в/из этой кодировки при вызове функций libmysql. Попробую как-то сделать.
карма: 26

1
Голосовали:Joiner
Ответов: 4628
Рейтинг: 749
#5: 2020-09-24 11:18:52 ЛС | профиль | цитата
Joiner, выложил обновление пакета и компилятора. Там исправлены компоненты MySQL. Поддерживается Unicode и 64 бита. Нюанс - при указании кодировок в dbMySQL.Charset нет необходимости вставлять ручную конвертацию на уровне схемы (выполняется автоматически в коде).
Наличие в этом свойстве кодировки UCS2 не имеет смысла:
Connection Character Sets and Collations писал(а):

The character_set_client system variable cannot be set to certain character sets: ucs2 utf16 utf16le utf32
Attempting to use any of those character sets as the client character set produces an error

Более того, и остальные пункты во многом бесполезны: ANSI-программы все равно не отобразят ничего, что отличается от текущей кодировки Windows или UTF-8, содержащей текст на "языке для программ, не поддерживающих Юникод". Unicode-программы - отобразят, но для них достаточно поставить по-умолчанию UTF-8 и в коде преобразовывать из неё: в какой кодировке не была бы БД, сервер сможет корректно её преобразовать в UTF-8, а компоненты на своей стороне - в кодировку компилятора (UTF-16).

Редактировалось 1 раз(а), последний 2020-09-24 11:24:04
карма: 26

1
Голосовали:Joiner
Ответов: 207
Рейтинг: 14
#6: 2020-09-24 11:31:09 ЛС | профиль | цитата
Netspirit, Спасибо тебе огромное, за отзывчивость и за помощь. Очень выручил.
карма: 2

0
Ответов: 207
Рейтинг: 14
#7: 2020-09-27 18:02:00 ЛС | профиль | цитата
Добавлен архив для компилятора от Netspirit.
Исправлены ошибки для стандартного компилятора.
карма: 2

0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)