Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

динамический Buffer   Найти похожие ветки 

 
Alexis ©   (2004-02-29 12:10) [0]

допустим, объявляя в
var buffer:array[0..200] of char;
создаем довольно большой буфер для принятия значения при вызове какой-либо функции, например
GetWindowsVersion(buffer);
strpas(buffer);

Однако может возникнуть переполнение.Каким образом можно создавать буфер динамической длины, а затем обрабатывать его.
Заранее благодарю.


 
Плохиш   (2004-02-29 12:18) [1]

GetMem напрмер


 
Maxud ©   (2004-02-29 12:19) [2]

buffer: array of Char;
...
SetLength(Buffer, 200);
buffer[4] := "F";


 
Anatoly Podgoretsky ©   (2004-02-29 12:20) [3]

Такой функции нет
var buffer: array of char;


 
Alexis ©   (2004-02-29 12:35) [4]


> Такой функции нет

Я понимаю что нет.По-моему в этой ситуации надо указатели использовать?


> SetLength(Buffer, 200);

Вопрос внимательно почитайте :)


 
Defunct ©   (2004-02-29 13:50) [5]

Alexis © (29.02.04 12:35) [4]
>> SetLength(Buffer, 200);

> Вопрос внимательно почитайте :)

А что не так?
Вы же можете написать, SetLength(Buffer, NewSize); где NewSize - переменная с требуемым значением.


 
Alexis ©   (2004-02-29 14:25) [6]


> А что не так?
> Вы же можете написать, SetLength(Buffer, NewSize); где NewSize
> - переменная с требуемым значением.

K primeru, ja citaju iz reestra znacenije funkcijej, kotoroja peredaet znacenije v buffer.Ja ved zaranee ne znaju kakoj dliny budet znacenije.


 
Romkin ©   (2004-02-29 14:26) [7]

Строку использовать. Что все уперлись в массив?
Кстати, что за функция GetwindowsVersion? Что-то я такой не знаю.
Как правило, функции API возвращают длину буфера. Или есть парная, например, GetWindowText и GetWindowTextLength. Использование простое:

var
S: string;
Len: integer;

Len := GetWindowTextLength(Handle);
if Len = 0 then
raiseLastOSError;
SetLength(S, Len);
if GetWindowText(Handle, PChar(S), Len) = 0 then
raiseLastOSError;

//и тд...


 
Verg ©   (2004-02-29 14:31) [8]

Практически все подобного сорта функции умеют сообщать, что размер заданного буфера недостаточен. Мало, того, большинство при этом сообщают "сколько надо".
Либо работают с известными максимальными значениям размеров.

Так что, как говорится, с больной головы на здоровую.



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

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-43517
Grinder
2004-02-22 15:56
2004.03.14
высота колонки в list view


3-43278
bobsan
2004-02-09 05:55
2004.03.14
Как заставить автоматически выпадать список в DBGrid


14-43830
Chapha
2004-02-21 22:22
2004.03.14
Игры


3-43323
SasaR
2004-02-16 12:12
2004.03.14
TClientDataSet - нужны DLL


14-43885
wasilla
2004-02-20 17:08
2004.03.14
Все качають Асп Линух 9