Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-58429
VID
2003-08-02 17:02
2003.08.18
Ограничение в 65536 символов в RichEdit


14-58489
korvin
2003-07-23 12:33
2003.08.18
Table.Append - ошибка адреса памяти


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


14-58401
alexdbases
2003-08-04 11:45
2003.08.18
FlashWindowEx или подсветка - мигание окна в таскбаре


14-58458
Bless
2003-07-23 10:59
2003.08.18
Удаление из многих таблиц





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский