![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Длина текста в переменной [D7, WinXP]
Freezz © (2006-02-01 19:23:00)Приветсвую вас, мастера!
Вот значит написал я такой код
var
Buff: pointer;
Size: dword;
Bytes: dword;
dFile: dword;
begin
...
dFile := CreateFile(Pchar('textfile.txt'), GENERIC_READ, 0, nil, OPEN_ALWAYS, 0, 0);
ReadFile(dFile, Buff^, Size, Bytes, nil);
CloseHandle(dFile);
end;
теперь вопрос, этим способом читаю я строки из текстового файла
при выводе MessageBoxA(0,Buff,'',0);
все выводиться правильно
Как мне узнать длину строки, что я считал?
SizeOf(Buff) не работает почему то.
length(Buff) показывает несовместимость типов..
вот в этом собственно и проблема
Джо (2006-02-01 19:41:00) [1]Принцип таков:
Size := 1024; // Размер области памяти
GetMem (Buff,Size); // Выделяешь память под Buff
if ReadFile(dFile, Buff, Size, Bytes, nil) then
begin
//
// В этом месте в Buff будут находиться прочитанные данные
// Кол-во байт, занимаемое данными, хранится в Bytes
// Оно, разумеется <= Size
//
end;
FreeMem (Buff); // Освобождаешь выделенную ранее память
Джо (2006-02-01 19:35:00) [2]> [1] Джо © (01.02.06 19:34)
Сорри, насчет 2) проглядел. У тебя он сохраняется в Bytes.
Джо (2006-02-01 19:34:00) [3]1. Под Buff ты должен выделить память САМ. Еще ДО вызова ReadFile. Соответственно, размер этой области памяти ты знаешь сам.
2. Кол-во байт, действительно прочитанных, сохраняется в параметре lpNumberOfBytesRead, который у тебя вообще nil.