Вниз
Скачать: CL | DM;

Размещение памяти под массив указателей.   Найти похожие ветки 

← →
Maks Realov   (2003-08-04 15:33) [0]

Приветствую, господа.
Хотел спросить - подскажите как красиво разместить, а потом и освободить, память под массив указателей? Я пока это делаю, imho варварски:

procedure TForm1.Button1Click(Sender: TObject);
var
HostName: PChar;
HostNameSize: cardinal;
ip: array[0..6] of PChar;
IPCount: integer;
begin
HostNameSize:= 255*SizeOf(Char);
HostName:= StrAlloc(HostNameSize);
for IPCount:= 0 to 6 do
begin
ip[IPCount]:= StrAlloc(20);
end;

IPCount:= 0;
StrCopy(HostName, "");
if GetDefaultHost(HostName, HostNameSize) then
begin
IPCount:= GetHosts(HostName, @ip, 4, 255);
end;
StrDispose(HostName);
for IPCount:= 0 to 6 do
begin
( ip[IPCount])
Приветствую, господа.
Хотел спросить - подскажите как красиво разместить, а потом и освободить, память под массив указателей? Я пока это делаю, imho варварски:

procedure TForm1.Button1Click(Sender: TObject);
var
HostName: PChar;
HostNameSize: cardinal;
ip: array[0..6] of PChar;
IPCount: integer;
begin
HostNameSize:= 255*SizeOf(Char);
HostName:= StrAlloc(HostNameSize);
for IPCount:= 0 to 6 do
begin
ip[IPCount]:= StrAlloc(20);
end;

IPCount:= 0;
StrCopy(HostName, "");
if GetDefaultHost(HostName, HostNameSize) then
begin
IPCount:= GetHosts(HostName, @ip, 4, 255);
end;
StrDispose(HostName);
for IPCount:= 0 to 6 do
begin
StrDispose(ip[IPCount]);
end;

end;

Спасибо.


← →
Anatoly Podgoretsky ©   (2003-08-04 15:41) [1]

Красиво?
Тогда
ip: array[0..6] of string;
Если надо, то SetLength(IP,lg);


← →
Skier ©   (2003-08-04 15:43) [2]

для твоего объявления красивей уже не сделать.


← →
Palladin ©   (2003-08-04 15:49) [3]

Не по варварски, а так как и надо.


← →
Maks Realov   (2003-08-04 15:53) [4]

Anatoly Podgoretsky:

не моги String. Мне C++ библиотека возвращает через ip указатель на массив указателей :\

Skier:
а как ещё можно объявить С-ый char **ip? Указатель на массив указателей.


← →
Maks Realov   (2003-08-04 15:57) [5]

Palladin:
неужели в Паскале нет ничего лаконичнее, чем в цикле перебирать все элементы массива, размер которого (и элементов которого) заранее известен? :(

Хм. Я тут подумал - а ведь можно статический двумерный массив сделать типа ip: array[0..6, 0..20] of Char; и передавать указатель на его нулевой элемент - прокатит?


← →
Palladin ©   (2003-08-04 15:59) [6]

если заранее

var
ips:array [0..6] of string[20]


← →
Palladin ©   (2003-08-04 16:00) [7]

в твоем случае
var
ips:array [0..6] of string[21];


for i:=0 to 6 do ips[i][21]:=0;


← →
Anatoly Podgoretsky ©   (2003-08-04 16:05) [8]

ip: array[0..6] of string;
эквивалентен
ip: array[0..6] of PChar;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.006 c
14-58406
artgamer
2002-12-12 23:56
2003.08.18
Караул!!! Не могу запустить приложение MCK!!!


14-58448
Buffoon
2003-08-01 22:50
2003.08.18
как запустить IE с апределенным URL ом


14-58463
Ден
2003-07-24 07:34
2003.08.18
Восстановление индексов


14-58496
dez
2003-08-04 20:15
2003.08.18
Как не дать мыше уйти с компонента


14-58383
Miralex
2003-08-04 14:32
2003.08.18
как сохранить в файл тип Record




   Наверх