Ошибка при изменении длины динамического массива

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Alex. S, если правильно помню, то это WordBool, но проще посмотреть определение в исходниках.

Добавлено спустя 2 минуты 35 секунд:
Не, ошибаюсь, это Longbool
Alex. S
новенький
Сообщения: 39
Зарегистрирован: 22.08.2015 10:37:00

Сообщение Alex. S »

Лекс Айрин, ясно.

Осталось только определить, что делать с типом String?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Alex. S, лучше всего, заменить на PChar -- это С совместимый стиль.

Добавлено спустя 1 минуту 4 секунды:
Внутри программы они легко транслируются друг в друга.
Alex. S
новенький
Сообщения: 39
Зарегистрирован: 22.08.2015 10:37:00

Сообщение Alex. S »

Лекс Айрин, я так понимаю, PChar = PAnsiChar.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

наоборот PAnsiChar =PChar

А PChar это ^Char
Alex. S
новенький
Сообщения: 39
Зарегистрирован: 22.08.2015 10:37:00

Сообщение Alex. S »

Лекс Айрин, я имел в виду, что они равны :) Ведь,

Код: Выделить всё

PAnsiChar:=PChar;


Вот ещё, сейчас смотрю типы данных в Си, там написано, что тип bool занимает 1 байт. Ну чем тогда им, Boolean не устраивает? По-моему, это тот-же bool :) А если нет, то как тогда его определить? :/
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Alex. S они НЕ равны.
Согласно правилам паскаля PAnsiChar = PChar, но PChar не равен PAnsiChar

Alex. S писал(а):Ну чем тогда им, Boolean не устраивает? По-моему, это тот-же bool :) А если нет, то как тогда его определить? :/

Это заморочки наСИльников. Если я правильно помню, то у них нет логического типа как такового. Его им заменяет int, который тоже может быть разного размера.

А вообще, с логическами типами практически во всех языках лажа...фактически он должен занимать один бит, но этого добиться тяжеловато при минимально адресуемой переменной размером в байт.
Alex. S
новенький
Сообщения: 39
Зарегистрирован: 22.08.2015 10:37:00

Сообщение Alex. S »

Лекс Айрин, оставлю тогда Boolean, если будут проблемы, буду решать по ходу уже...

Спасибо Всем, кто помогал в данной теме :)
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

Alex. S писал(а):1) В описании параметров нескольких процедур, я использую const, я так понимаю, его тоже лучше убрать... То есть, оставить передачу либо с var, либо без ничего...


var - передача по ссылке. В других языках будет указатель. Const по факту тоже, т.к. компилятор оптимизирует сущности размером более указателя и передает указатель на сущность вместо нее самой. Но тут возможны варианты. Так что наверное лучше var. Хотя в случае строк лучше const, т.к. тогда счетчик ссылок не меняется.

Alex. S писал(а):2) Как правильно передать имя файла в функцию dll? Раньше использовал String, а как сейчас, даже не знаю.


PChar
Alex. S
новенький
Сообщения: 39
Зарегистрирован: 22.08.2015 10:37:00

Сообщение Alex. S »

Mirage, ясно.

А как с bool? Так и использовать тип Boolean, или его тоже нужно чем-то заменить?
Ответить