Страница 1 из 1
Динаический буффер. Доступ.

Добавлено:
27.03.2009 19:11:57
Tronix
Всем привет.
Подскажите плиз, как из этого буффера вывести первый элемент на экран? Последний/Любой? Забыл совсем.
- Код: Выделить всё
Var
Buf : ^Char
Begin
GetMem(Buf, 512);
WriteLn( Buf^[1], Buf(1)^ ); <---- HELP!
End.
И да, помню что можно через Type сделать тип массива от 1 до 512, но мне нужно любого размера....
Re: Динаический буффер. Доступ.

Добавлено:
27.03.2009 19:38:21
Михаил Крамер
- Код: Выделить всё
var buf: ^Char;
begin
GetMem(buf, 512);
Buf[0]:= 'A';
Buf[511]:= 'B';
Write(Buf[0], Buf[511]);
end.
Re: Динаический буффер. Доступ.

Добавлено:
27.03.2009 19:43:25
Tronix
По приведенному Вами выше примеру ругается, что Error 121: Invalid Qualifier. Если бы все так было бы просто, я бы не спросил... Компилятор - FPC v2.1. Может ключи какие?
Re: Динаический буффер. Доступ.

Добавлено:
27.03.2009 21:06:00
Михаил Крамер
У меня FPC 2.2.0 и в нём не ругается, даже если указываю режим совместимости с TP7... Может указанные операторы начали поддерживаться только в версии 2.2.0 (я в FPC недавно работаю).
Можете конечно попробовать чтой-то типа (buf + 511)^, но если не поддерживаются индексы, боюсь, что не работает. Поиграйтесь ключом -M, или (если есть возможность) скачайте новый компилятор.
Кстати, попробуйте ^Char заменить на стандартный PChar. По моему с ним должно сработать даже в стареньком TP 7.
Добавлено спустя 55 секунд:
Кстати, а какая ОС?
Re: Динаический буффер. Доступ.

Добавлено:
27.03.2009 21:15:58
Tronix
Спасибо огромное. С PChar заработало все как buf[blabla] := blabla;
ОС WinXP. При возможности скачаю новую версию FP.
Еще раз огромное спасибо.
Поторопился. Компилится, но трапается с эксепшн виолейшн при попытке buf[1] := A; Будем качаать новую версию.
Re: Динаический буффер. Доступ.

Добавлено:
27.03.2009 21:30:40
Михаил Крамер
Не должно с PChar падать по идее...
Добавлено спустя 1 минуту 23 секунды:
Память то выделять не забываете?
Re: Динаический буффер. Доступ.

Добавлено:
27.03.2009 21:40:10
Tronix
Действительно, забыл -) Было GetMem(buf, BufSize) и кусок закоменченного кода до этого, поэтому в BufSize было хз что ))
Спасибо огромное Вам за помощь. В итоге так все работает:
- Код: Выделить всё
var buf : PChar;
begin
GetMem(buf, 512);
buf[1] := 'A';
writeln(Buf[1]);
end.
Re: Динаический буффер. Доступ.

Добавлено:
27.03.2009 21:51:58
Михаил Крамер
Но новую версию всё же скачайте, поскольку в ней будет работать даже такой код:
- Код: Выделить всё
type rec = record a, b: Integer; end;
var r: ^rec;
begin
GetMem(r, Sizeof(rec)* 512);
r[511].a:= 512;
end.