Вниз
Скачать: CL | DM;

c++->pascal   Найти похожие ветки 

← →
emike   (2003-08-25 04:18) [0]

здравствуйте
мне нужно перевести в паскаль такой сишный код (книжек под рукой нет):
typedef struct _stream_processor {
....
} stream_processor;
typedef struct {
stream_processor *streams;
.....
} stream_set;
...
stream_set *set = calloc(1, sizeof(stream_set));
set->streams = calloc(5, sizeof(stream_processor)); //тут создаётся массив stream_processor"ов
...
stream = &set->streams[set->used]; //а тут обращение к его элементам
...

какие параметры у calloc и как обращаться к элементам массивов?


← →
Некрофил-затейник__   (2003-08-25 06:30) [1]

emike
Попробуй все это через динамический массив.
пример использования dynamic array

var
a:array of string;
count:integer;
begin
SetLength(a,3);
for count := 0 to Length(a)-1 do
a := "Stroka "+inttostr(count);
writeln(a[Length(a)-1]);
SetLength(a,0);
end;


← →
emike   (2003-08-25 15:43) [2]


> Некрофил-затейник__ (25.08.03 06:30) [1]

ну что это динамические массивы я понял
что делает функция calloc? выделяет n блоков указанного размера?
и как обойтись без динамических массивов (максимально сохранив эти типы данных)? очень не хочется перелопачивать горы уже переведённого кода


← →
DrPass ©   (2003-08-25 16:01) [3]

Если дословно, то примерно так:
GetMem(_set, sizeof(stream_set));
FillChar(_set^, sizeof(stream_set),0);
GetMem(_set^.streams, 5*sizeof(stream_processor));
FillChar(_set^.streams^, 5*sizeof(stream_processor),0);
Вполне вероятно, что обнуление с помощью FillChar нафиг не нужно. Просто calloc, если не ошибаюсь, обнуляет выделенную область памяти.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
1-33547
muzik
2003-08-28 18:54
2003.09.11
Fonts - Фонты


6-33707
young_shrek
2003-07-09 13:30
2003.09.11
HTTP error message: Interface not supported


3-33467
KIR
2003-08-20 15:02
2003.09.11
Транзакции в парадоксе...


4-33853
Dw
2003-07-14 20:14
2003.09.11
Как перехватить вставку текста из буфера?


1-33585
Maks
2003-08-28 14:47
2003.09.11
PopupMenu




   Наверх