Вниз
Скачать: 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.005 c
14-58426
Best Gun
2003-08-02 19:26
2003.08.18
Обновления для Win2000 + SP4


14-58442
sniknik
2003-07-31 17:37
2003.08.18
Обращение к коллективному разуму. :о)) нужен алгоритм.


14-58410
greenrul
2003-02-14 18:13
2003.08.18
Как вставить background,


14-58480
Владий
2003-07-23 16:00
2003.08.18
Как внести рассчитанное значение?...


14-58402
Zheks
2003-08-04 10:57
2003.08.18
Мастера, продайте талант, расскажите как распечатать StringGrid.




   Наверх