Текущий архив: 2003.09.11;
Скачать: 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 вся ветка
Текущий архив: 2003.09.11;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.007 c