vovka3003 wrote:

Без комментариев...

Огромное спасибо! Работает - а это главное )))

Классическая задача парсинга: имеется текстовый файл, размер очень большой, в память не загружается ( TStringList.LoadFromFileAnsi(), как и ожидалось, выдаёт Out of Memory ). Необходимо читать данные построчно.


Попробовал так:

const
  BufSize = 1;

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
  FileName : string;
  TextFile : TFileStream;
  buf: Char;
  tmpLine: string;
begin
  FileName := ExtractFilePath( Application.ExeName ) + 'test.txt';
  TextFile := TFileStream.Create( FileName, fmOpenRead );
  TextFile.Seek(0,soFromBeginning);
  while not (TextFile.Position >= TextFile.Size) do
  begin
    // считать строку
    tmpLine := '';
    while not (TextFile.Position >= TextFile.Size) do begin
      TextFile.Read( buf, BufSize );
      if buf = #13 then
      begin
        TextFile.Read(buf, BufSize ); // считать #10
        break;
      end;
      tmpLine := tmpLine + buf;
    end;
    ShowMessage('Строка: '+tmpLine);
  end;
  TextFile.Free;
end;

Но оказалось, что метод TFileStream.Read передаёт в строку байт и тут же его преобразует в Юникод, что приводит к неверным результатам.

Эрудит. Первая версия.

https://1.bp.blogspot.com/-42W_0WWcVyU/XsVSOIQU8_I/AAAAAAAACQ4/EZCiZAMpcqkRBUGFR0SZnftJJYSdiJ7QQCLcBGAsYHQ/s640/%25D1%2581%25D0%25B5%25D0%25BC%25D1%258C%25D1%258F%2B%25D0%25B8%25D0%25B3%25D1%2580%25D0%25B0%25D0%25B5%25D1%2582.jpg

Фичи - этот раздел обязателен для любого игрового проекта, и включает он различные хотелки и вкусности, придающие игре индивидуальность  и притягательную особенность. Вот только вопрос о том, когда будет реализована (и будет ли вообще реализована) та или иная возможность всегда остаётся открытым. Но в начале процесса сюда можно писать всё, что в голову приходит, и это круто! Поскольку в составе игры будет словарь, можно заложить в игру дополнительную функциональность, связанную с обучением. По личному опыту игры в он-лайн версию "Эрудита" на платформе mail.ru мне там не хватало толкования слов, которые выкладывали мои визави, поэтому можно включить в игру не просто словарь существительных, а толковый словарь, например Ожегова или Ефремовой. А ещё лучше - создать систему, которую можно самостоятельно дополнять и расширять.


Читать далее:
https://createmyvisualdatabaseapp.blogs … st_25.html

vovka3003 wrote:
k245 wrote:
vovka3003 wrote:

regsvr32 из SysWOW64 если..?

выдает ошибку:
...

https://i.imgur.com/JFwpjEy.png
От имени администратора.

Да, точно! Спасибо, так всё регится и работает потом! )) но я использовал 32-битную версию регистратора и батник со строкой:

c:\windows\system32\regsvr32 e:\mvd\padeg\padeg.dll

vovka3003 wrote:

Вариант, который запускается без регистрации ком-сервера (только exe-шник хакать приходится после сборки).


Попробовал запустить экзешник из архива - ошибка выполнения.

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=6621&download=0


А что за магия с манифестом? )))

Эрудит. Проектирование БД


https://1.bp.blogspot.com/-1eY-5InKRGE/XsP4Mj_phkI/AAAAAAAACNw/HK7GyRP3SP0ESsoFuNsZt06fGLFs3BIaACLcBGAsYHQ/s1600/%25D0%25AD%25D1%2580%25D1%2583%25D0%25B4%25D0%25B8%25D1%2582.png


Данная статья открывает цикл, посвященный созданию игр в среде разработки My Visual Database. Хотя основное назначение данной RAD - это разработка бизнес-приложений для работы с базами данных, но, благодаря наличию встроенного интерпретатора скриптов и довольно обширного набора поддерживаемых классов, My Visual Database можно использовать для создания игр. Разумеется, шутер или MMORPG сделать не получится, но возможно создавать игры, не требовательные к графике. Например обучающие и развивающие игры, в составе которых может быть база знаний.


Читать далее:
https://createmyvisualdatabaseapp.blogs … -post.html

осталось проверить вариант подключения DLL через DynamicWrapperX...

vovka3003 wrote:

Предыдущую версию возьмите. Она без глюков.

Предыдущая версия вообще никак не ставится:

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=6618&download=0

vovka3003 wrote:

regsvr32 из SysWOW64 если..?

выдает ошибку:


http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=6617&download=0

Радоваться, но недолго, так как библиотека глючная, примерно через минуту OLE-сервер падает c ошибкой:

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=6613&download=0

Тестировал на Win7x64


P.S. Простая регистрация (по прилагаемой к библиотеке инструкции) запуском regsrv32 вообще не выполняется - выдаёт ошибку установки сервера.

eugene1995miroshnikov wrote:

По-моему на delphikingdom лучшая(с стороны правильности склонения) что мне встречалась библиотека для склонения со всеми пояснениями... Если Вы окажите помощь каким образом можно использовать ее в MVD, Вам будет благодарен не один человек..)

Решение:

1. Скачать последнюю версию из группы - https://vk.com/public93917660
2. Зарегистрировать OLE по инструкции - https://kb.mista.ru/article.php?id=870  (разумеется, указав padegUAC.dll)
3. Пользовать по инструкции в документации:

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
  Decl : Variant;
begin
  //  Создается объект автоматизации:
  Decl := CreateOleObject('PadegUCA.Declension');
  // явное задание рода, дательный падеж
  ShowMessage( Decl.GetFIOPadeg('Злотникова','Людмила','Владимирована','ж',3) );
end;

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=6612&download=0

1,112

(6 replies, posted in FAQ)

Freeman wrote:

Вопрос остался без ответа

Точный ответ дать не получится, потому что вопрос неточный. Для объединения данных из несколько строк в одну используйте group_concat, примерно так:

SELECT 
  tablename.firstname || char(13) || 
( select 
  group_concat( (tablename.field1 || char(9) || tablename.field2 .. tablename.fieldn) SEPARATOR char(13) ) 
  from tablename where  tablename.firstname = 'Иванов' ) 
where  tablename.firstname = 'Иванов'

Регулярно на форуме появляются темы, смысл которых сводится к тому, чтобы кто-то выполнил работу, которую автор темы не может или не хочет делать.А часто таким авторам даже лень поиск на форуме запустить, чтобы найти ответ на свой вопрос.

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=6578&download=0

А как вы относитесь к халявщикам?

1,114

(2 replies, posted in Russian)

В базе данных могут храниться разные типы данных, в том числе и текст. Вас интересует количество символов в конкретной таблице и конкретном поле? Тогда поможет запрос, например, такой:


select sum( length( name ) ) from content

где name - имя текстового поля, content - имя таблицы


Выполните подобный запрос для всех текстовых полей всех таблиц базы данных и вы получите общее количество символов. cool

1,115

(2 replies, posted in Talks about all)

С праздником! )))
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=6550&download=0

1,116

(2 replies, posted in Russian)

Это возможно:

procedure Form1_pQuestionQuect_OnMouseEnter (Sender: TObject);
var
  tmpComponent:Tcomponent;
begin
  if (Form1.TagString <> '') then
  begin
    tmpComponent := Form1.FindComponent(Form1.TagString);
    if tmpComponent <> nil then
      if tmpComponent is TWinControl then
        TWinControl(tmpComponent).SetFocus;
  end;
end;

Инерционный скроллинг


https://1.bp.blogspot.com/-qkIFINb8dQc/XqG9O8dAa7I/AAAAAAAAB_U/1ELAqRQUFro5C4EaYkrV7dHyCdyD7IczgCLcBGAsYHQ/s640/%25D0%25BA%25D0%25BD%25D0%25B8%25D0%25B3%25D0%25B0.png


Одним из популярных приемов в реализации пользовательского интерфейса стал инерционный скроллинг, с помощью которого очень удобно проматывать длинные списки или текст. С помощью скрипта вы можете добавить этот эффект в вашу программу, созданную в среде разработки My Visual Database.


Читать далее:
https://createmyvisualdatabaseapp.blogs … st_23.html

Пусть ваш элемент называется MyControl, тогда


TWinControl(MyControl).ControlCount - число дочерних элементов, а
TWinControl(MyControl).Controls[] - массив дочерних элементов,

1,119

(2 replies, posted in Russian)

Почитайте статью "Читаем QR код" https://www.ph4.ru/qr_qrinside.php
В ней приводится алгоритм распознавания и ссылка на имеющиеся сейчас стандарты кодирования.


Только вот непонятно, как вы собираетесь сами коды считывать? My Visual Database - среда разработки настольных приложений, а технологии чтения QR-кодов в первую очередь ориентирована на смартфоны. К тому же My Visual Database не поддерживает прямого взаимодействие с веб-камерой или другими устройствами ввода видео/изображения.

Доброго дня. Мне тоже интересно больше узнать про встроенную функцию Translate.


Второй аргумент, как я понимаю, это новое значение текстовой переменной? А первый аргумент - это константа? Или текущее значение текстовой переменной? Если нужно несколько раз сменить значение, то делать так

Translate('Yes', 'Да');
...
Translate('Yes', 'Yes');

или так

Translate('Yes', 'Да');
...
Translate('Да', 'Yes');

Хочу заметить, что недоступные элементы должны выглядеть иначе, чем доступные. Иначе или вы пользователя с ума сведёте, или он достанет вас вопросами, почему он не может ввести данные в поле, которое выглядит, как все остальные, но недоступно  smile


Другое дело, что не всегда стандартное поведение контролов при установке свойства Enabled = True совпадает с эстетическими ожиданиями.  Лично я для TdbEdit , если нужно запретить изменения, ставлю свойство ReadOnly := True и меняю цвет фона на clBkInfo, но это уже на любителя.

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=6469&amp;download=0

Так а что у вас в этом варианте не работает? В самом запросе сортировки нет, значит записи будут выдаваться как бог на душу положит. При клике по колонкам неправильно сортируются строки таблицы?

Комбобокс + выбор из справочника


https://1.bp.blogspot.com/-W9csmYvIhZQ/XoWj_HNdzHI/AAAAAAAAByU/cbiq4MoksNw_uyyDJpw_FpwafBCVGsgsQCLcBGAsYHQ/s1600/pasted%2Bimage%2B0%2B%25281%2529.png


Выбор справочных данных из выпадающего списка комбобокса очень удобен при небольшом количестве значений. Но, если значений много или требуется разобраться, что за этими значениями стоит, удобно использовать для выбора нужного значения форму справочника, на которой есть фильтрация. Для каждой такой кнопки приходится писать один и тот же код. Очередная автоматизация позволит исключить ненужный копипаст и упростить создание вашего проекта.


Читать далее:
https://createmyvisualdatabaseapp.blogs … -post.html

mikhail_a wrote:

Но, сортировка то происходит так, как будто в столбце не даты, а текст!
Т.е. сортировка дат происходит неверно.

Вы как сортировку задаёте? В запросе? Запрос в студию smile

Кликаете по колонкам? Проверил на последней версии, все работает:
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=6443&amp;download=0


P.S. Оставьте дату в запросе в покое и всё будет ОК. Я же вам уже писал, что вы своим форматированием делаете результат строкой smile

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