Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Char** [D5, NT4]


old_mole ©   (2002-11-14 10:04:00) 

Есть DLL, есть source, у одной из функций есть параметер такого типа. Как "конвертировать" это в Delphi?


Smithson   (2002-11-14 12:12:00) [1]

var pC: Pchar - это действительно передача по ссылке. И действительно, в языках программирования (и C, и Паскаль) ссылкаи указатель- это разные понятия. Но в реализацияхи С, и Паскаль ссылка и есть указатель. Поэтому описание функции void c_func(... char** ...) эквивалентно procedure c_func (... var pC: Pchar ...)


old_mole   (2002-11-14 11:53:00) [2]

Спасибо!


Dimka Maslov   (2002-11-14 11:52:00) [3]

varозначает, что в стек будет помещено не значение параметра, а его адрес, чем и достигается возможность изменения значения. Если же varтебе не подходит, то
char** эквивалентно паскалевскому ^PChar.


Skier   (2002-11-14 11:50:00) [4]

>old_mole
IMHO, Char** = PPChar, где PPChar = ^PChar


old_mole   (2002-11-14 11:45:00) [5]

Не понял по поводу var. Всегда думал, что это "передача по ссылке", т.е. после отработки функции(процедуры) изменения останутся в силе.


Внук   (2002-11-14 11:11:00) [6]

Более точно Char** - это указатель на PChar, что и достигается применением var. Но в каждом конкретном случае возможны варианты, конечно. Если нужен массив строк, может, проще использовать array of string. Или array of pchar и процедуру SetLength.
Почему динамический ассив не принимает? Должна...


old_mole   (2002-11-14 10:54:00) [7]

В том то и дело, что PChar дельфийский соответствует Char* сишному. Получается, что Char**, это массив PChar. Для того, чтобы, описать этот массив требуется указать ему граница. Динамический массив функция не принимает.


Внук   (2002-11-14 10:33:00) [8]

Не очень понятен вопрос. Если это параметр функции, можно переделать в
... var MyPar:PChar ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо