Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.18;
Скачать: 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 вся ветка

Текущий архив: 2003.08.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
14-58472
Jean
2003-07-23 20:45
2003.08.18
Элементы ИИ. Распознавание слов.


14-58433
Всеволод Соловьёв
2003-08-03 00:02
2003.08.18
Младший возраст участников форума


14-58467
Алексей
2003-07-23 08:29
2003.08.18
Упаковка dbf таблицы


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


14-58491
alex2000
2003-08-04 21:25
2003.08.18
Замена символов в файлах