Вверх ↑
Этот топик читают: Гость
Ответов: 2406
Рейтинг: 691
#1: 2025-04-17 11:19:52 ЛС | профиль | цитата
Код компонента HardDisc сделан так что не обнуляет данные перед получением данных об очередном диске. В результате чего, если у очередного диска нет данных о метки диска, файловой системе или серийного номера, то будут подставлены данные предыдущего диска. Смотрите на снимке верхнюю таблицу диск J (это пустой дисковод).



-Добавил свойства для вставки текста при отсутствующей метки (TextEmptyLabel) и при отсутствующей файловой системе (TextEmptyFileSystem). Данные о серийном номере сбрасываются в 0. Нижняя таблица демонстрирует внесенные правки.
-Добавил возможность выбора вывода данных о размере диска как Real (был только Integer)
-Добавил возможность выбора вывода данных о типе диска строкой (был только код Integer)
-Добавил вывод ошибки и по выбору код или текст ошибки

На данный момент у элемента устаревший код (наверняка с выходом win 10) отключения диска doEject. Он отключает диск, но тот остается видимым в системе. Можно проверить на тестовой схеме идущей с обновленными данными, с типом диском REMOVABLE. Если у кого есть грамотное решение этого вопроса или хорошая статься, сообщите.


Вид формы тестовой схемы:


Тестовая схема (для тестирования до внесенных изменений)

Add(MainForm,14519189,336,175)
{
Width=529
Height=228
Caption="Пример использования HardDisk"
Position=1
link(onCreate,6760413:doEnum,[])
}
Add(HardDisk,6760413,385,182)
{
Size=1
Point(doEnum)
Point(onEnum)
link(onEnum,8167481:doString,[])
}
Add(StringTable,8916597,490,182)
{
Left=5
Top=5
Width=505
Height=180
Font=[MS Sans Serif,12,0,0,1]
Columns=#4:Disk|4:Type|9:Label=120|10:Serial=120|14:FileSystem=110|
Grid=0
}
Add(FormatStr,8167481,434,182)
{
DataCount=5
Mask="%1;%2;%3;%4;%5"
link(onFString,8916597:doAdd,[])
}

Архив с измененными файлами 2025.04.18
В архиве отдельно папка для FPC 3.2

Редактировалось 5 раз(а), последний 2025-04-18 14:29:39
карма: 11

0
Ответов: 191
Рейтинг: 5
#2: 2025-04-18 08:06:15 ЛС | профиль | цитата
С Delphi вроде ок. C FPC Не работает:

Compiling D:\Soft\HiAsm 4 AltBuild FPC\Elements\delphi\code\hiHardDisk.pas
hiHardDisk.pas(33,96) Error: Wrong number of parameters specified for call to "ToString"
objpas.inc(1027,24) Error: Found declaration: ToString:AnsiString;
hiHardDisk.pas(117,43) Error: Wrong number of parameters specified for call to "ToString"
objpas.inc(1027,24) Error: Found declaration: ToString:AnsiString;
hiHardDisk.pas(122,48) Error: Wrong number of parameters specified for call to "ToString"
objpas.inc(1027,24) Error: Found declaration: ToString:AnsiString;
hiHardDisk.pas(156) Fatal: There were 6 errors compiling module, stopping
Fatal: Compilation aborted
Сборка завершена.


Редактировалось 1 раз(а), последний 2025-04-18 08:07:53
карма: 1

0
Ответов: 1127
Рейтинг: 80
#3: 2025-04-18 08:24:11 ЛС | профиль | цитата
strannik_nebes писал(а):
C FPC Не работает:

fpc штатный 1.9.6 или новый 3.2.2 - ?

Это два разных компилятора и код элементов для каждого разный.
Для 3.2.2 как минимум в элементах должно быть не просто ToString, а Share.ToString.
карма: 2

0
Ответов: 191
Рейтинг: 5
#4: 2025-04-18 08:50:09 ЛС | профиль | цитата
tom-it, а проверяю всегда на актуальной версии. Старая не поддерживается.
карма: 1

0
Ответов: 1127
Рейтинг: 80
#5: 2025-04-18 09:05:49 ЛС | профиль | цитата
strannik_nebes писал(а):
Старая не поддерживается.

А разве Slava гдето упоминал о новой версии? Модификация для штатного(старого) пакета.

Новый компилятор требует исправлений в коде элементов. Поэтому каждый раз Netspirit выкладывает отдельным архивом пакет с модификациями.

Чтобы не вводить в заблуждение разработчиков предлагаю сделать для нового компилятора отдельный пакет.
Скачать последние обновления от Netspirit
Распаковать и переименовать папку delphi в delphi+
Переместить папку delphi+ в хиасм elements\
Скачать архив https://forum.hiasm.com/getfile/40564
Скопировать содержимое в хиасм elements\delphi+ с заменой
Перезапустить хиасм далее в сервис>пакеты выбрать пакет windows+ и отметить галочками нужные компиляторы.

В дальнейшем закидывать элементы по своим пакетам. Тоесть те элементы где явно сказано что для нового компилятора в delphi+, где нет упоминаний в delphi.
Ну и не забыть вернуть штатное содержимое в пакет windows, ведь после установки нового компилятора там все заменилось.
карма: 2

0
Ответов: 2406
Рейтинг: 691
#6: 2025-04-18 14:05:03 ЛС | профиль | цитата
Обновил архив в первом посте. Добавились новые свойства, обновился пример, файлы для FPC 3.2.

strannik_nebes, желательно уточнять о каком компиляторе идет речь и не забывать что FPC 3.2 еще не является штатным. По возможности буду стараться поддерживать данный компилятор. В архив добавил отдельно папкой файлы для FPC 3.2.

Редактировалось 1 раз(а), последний 2025-04-18 14:28:47
карма: 11

0
Ответов: 4660
Рейтинг: 764
#7: 2025-04-18 19:52:52 ЛС | профиль | цитата
Если бы в официальный пакет добавить файлы Share.pas и CodePages.pas от нового пакета, то сторонние компоненты можно было бы изначально делать совместимыми с новым и старым пакетом.
карма: 26

0
Разработчик
Ответов: 26271
Рейтинг: 2142
#8: 2025-04-19 15:20:38 ЛС | профиль | цитата
Netspirit писал(а):
Если бы в официальный пакет добавить файлы Share.pas и CodePages.pas от нового пакета, то сторонние компоненты можно было бы изначально делать совместимыми с новым и старым пакетом.

Если выложишь их отдельным файлом, то я постараюсь их добавить. Кстати, Share.pas ты использовал последний с SVN для своей редакции? И в какой папке должен храниться CodePages.pas?

Редактировалось 1 раз(а), последний 2025-04-19 15:22:25
карма: 22

0
Ответов: 4660
Рейтинг: 764
#9: 2025-04-19 21:32:14 ЛС | профиль | цитата
Вот архив. Вроде, актуальная версия, если за последнюю неделю ничего не менялось.

Чем новый Share.pas отличается от оригинального:
1) Добавлены некоторые типы данных, которые имеют разную размерность для 32/64 бит компиляторов или разный тип строк-символов (AnsiString/WideString).
Или которые присутствуют в новых компиляторах/KOL, но нет в текущих.
С помощью директив компиляции включается нужный тип в зависимости от компилятора.
Поскольку изменились некоторые объявления функций с использованием новых типов, понадобилось поправить некоторые компоненты, которые находятся в архиве. Поправки касались только наименований типов в компонентах, использующих класс Share.TArray.

Типы PKOLStrList/PKOLStrListEx - идентичны PStrList/PStrListEx в текущем пакете, но в новом работают со строками AnsiString/WideString в зависимости от ANSI/юникодного компилятора.

2) Были добавлены глобальная переменная DefaultSystemCodePage, некоторые функции, активно используемые в новом пакете.
В том числе, делфийские варианты тех, которые были на ассемблере, для 64-битного компилятора.
Поскольку в официальном пакете они не используются, то на работу влиять никак не будут

3) Из необязательного
- добавилась функция dtInt64(var Data: TData; Value: Int64),
которая позволяет 32-битному компилятору выдавать Int64 в поле Real, как-будто вызвана функция dtReal().
Нигде в официальном пакете пока не используется, но в новом это поволяет выдавать размер и позицию в файловых стримах больше 2 Гб на 32-битных компиляторах, что поддерживается новой KOL (в официальном пакете это тоже можно частично реализовать без поддержки в KOL).
Без этой функции Int64 нужно сначала присвоить в переменную типа Real затем её подать на dtReal().
Потому что без этого Int64 не "кастится" в Real: dtReal(_data, Real(I)).
- добавилась LoadResStr(). Использовалась кодогенератором в новом пакете, с недавнего времени уже нет.

Для текущих компиляторов ничего не должно особенно поменяться.
Все файлы находятся в папке code, CodePages.pas нужно добавить в SVN.

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

Потом можно будет залить на SVN.

Редактировалось 1 раз(а), последний 2025-04-19 21:35:40
карма: 26

0
файлы: 1Share_pas_from_new_FPC.zip [31.4KB] [86]
Разработчик
Ответов: 26271
Рейтинг: 2142
#10: 2025-04-19 22:58:47 ЛС | профиль | цитата
Netspirit писал(а):
если за последнюю неделю ничего не менялось

Не, вижу, на базе последнего сделано.
карма: 22

0
Ответов: 191
Рейтинг: 5
#11: 2025-04-23 11:25:18 ЛС | профиль | цитата
Я не увидел отличий в работе после замены файлов "Share_pas_from_new_FPC.zip" с компилятором Delphi.
карма: 1

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