Главная страница
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.007 c
14-58416
Igor__
2003-07-31 04:45
2003.08.18
Почему мой винт не на всех компах пашет ???


14-58462
Spawn
2003-07-24 09:32
2003.08.18
Удаление ограничительных полей


14-58430
Delphi5.01
2003-08-02 20:51
2003.08.18
Pravilnoe osveshenie?


14-58461
supersan
2003-07-21 17:33
2003.08.18
Проблема с IBTable.Locate


14-58468
Driverrr
2003-04-23 13:20
2003.08.18
Рисунки