Форум: "Потрепаться";
Текущий архив: 2003.08.18;
Скачать: [xml.tar.bz2];
ВнизРазмещение памяти под массив указателей. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c