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

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

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

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

Сообщение Лекс Айрин » 22.02.2016 12:19:27

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

Добавлено спустя 2 минуты 35 секунд:
Не, ошибаюсь, это Longbool
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение Alex. S » 22.02.2016 12:32:22

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

Осталось только определить, что делать с типом String?
Alex. S
новенький
 
Сообщения: 39
Зарегистрирован: 22.08.2015 11:37:00

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

Сообщение Лекс Айрин » 22.02.2016 12:35:41

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

Добавлено спустя 1 минуту 4 секунды:
Внутри программы они легко транслируются друг в друга.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение Alex. S » 22.02.2016 12:43:00

Лекс Айрин, я так понимаю, PChar = PAnsiChar.
Alex. S
новенький
 
Сообщения: 39
Зарегистрирован: 22.08.2015 11:37:00

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

Сообщение Лекс Айрин » 22.02.2016 13:00:35

наоборот PAnsiChar =PChar

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

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

Сообщение Alex. S » 22.02.2016 13:07:51

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


Вот ещё, сейчас смотрю типы данных в Си, там написано, что тип bool занимает 1 байт. Ну чем тогда им, Boolean не устраивает? По-моему, это тот-же bool :) А если нет, то как тогда его определить? :/
Alex. S
новенький
 
Сообщения: 39
Зарегистрирован: 22.08.2015 11:37:00

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

Сообщение Лекс Айрин » 22.02.2016 13:22:22

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

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

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

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

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

Сообщение Alex. S » 22.02.2016 13:27:47

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

Спасибо Всем, кто помогал в данной теме :)
Alex. S
новенький
 
Сообщения: 39
Зарегистрирован: 22.08.2015 11:37:00

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

Сообщение Mirage » 22.02.2016 14:00:41

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


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

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


PChar
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

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

Сообщение Alex. S » 22.02.2016 14:30:16

Mirage, ясно.

А как с bool? Так и использовать тип Boolean, или его тоже нужно чем-то заменить?
Alex. S
новенький
 
Сообщения: 39
Зарегистрирован: 22.08.2015 11:37:00

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 230

Рейтинг@Mail.ru