powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Передача в процедуру адреса строки
11 сообщений из 11, страница 1 из 1
Передача в процедуру адреса строки
    #39563068
m52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте,

Мне нужно передать в процедуру не строку string, а указатель на нее.
Я знаю, что можно передать параметр как var, но мне надо по-другому.

Я сделал так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Type
  PtrString = ^string;

procedure TForm1.Button1Click(Sender: TObject);
var st:string;
begin
  st:='Bonjour';
  SetStr(@st);
  ShowMessage(st); // здесь выдало 'Привет по-русски'
end;

Procedure SetStr(pSt: PtrString);
begin
  pSt^:='Привет по-русски';
end;


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

Возможно, я все правильно сделал и проблем не в будущим не возникнет.

В любом случае мнение экспертов по поводу данного кода мне не помешает.
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563075
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m52, все ок, но лучше использовать стандартный тип PString
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563095
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любит наш народ любовно раскладывать грабли на своем пути... Потом выясниться, что где-нить счетчик ссылок облажается...
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563144
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m52Я знаю, что можно передать параметр как var, но мне надо по-другому.Можете рассказать почему?
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563207
m52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому, что передать надо адрес переменной в не в процедуру, а в Thread и запомнить там в локальную переменную в области Private.
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563208
Кар-Кар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остается лишь учесть, что потоки не сразу запускаются так что указатель должен быть "бессмертным". GetMem, AllocMem и прочие в куче, а не на стеке.
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563209
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж страдать такой хренью, почему не сделать тупо глобальный string без всяких поинреров?
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563215
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m52Потому, что передать надо адрес переменной в не в процедуру, а в Thread и запомнить там в локальную переменную в области Private.

Совершенно не ясно, что именно в описанном сценарии мешает передавать строку. Никто не мешает передавать в потом строку и запоминать её в переменных потока.
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563243
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m52Потому, что передать надо адрес переменной в не в процедуру, а в Thread и запомнить там в локальную переменную в области Private.
Вы же понимаете, что после этого к этой строке в потоке можно будет обращаться только через синхронизацию?.. :)
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563261
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker,

+1
...
Рейтинг: 0 / 0
Передача в процедуру адреса строки
    #39563270
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое ощущение, что ТС пытается передать адрес, куда он запишет результаты работы потока
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Передача в процедуру адреса строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]