Форум: "WinAPI";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
ВнизФайл больше 136 КБ Найти похожие ветки
← →
Prov (2003-07-24 10:23) [0]Здравствуйте, Мастера...
Такой вопрос-проблема:
Есть многострочный эдит, писанный на АПИ.Так я загружаю в него текст из файла:
procedure LoadFile;
var Path: AnsiString; Buffer: array[1..MAXIMUM_ALLOWED div 200] of PChar;
begin
FillChar(Buffer, SizeOf(Buffer), 0);
Path:= GetOpenFilePath;
if Length(Path)>0 then
begin
StreamLoad.Free;
StreamLoad:= TFileStream.Create(Path, fmOpenRead or fmShareExclusive);
StreamLoad.Read(Buffer, SizeOf(Buffer));
( hEdit, @Buffer)Здравствуйте, Мастера...
Такой вопрос-проблема:
Есть многострочный эдит, писанный на АПИ.Так я загружаю в него текст из файла:
procedure LoadFile;
var Path: AnsiString; Buffer: array[1..MAXIMUM_ALLOWED div 200] of PChar;
begin
FillChar(Buffer, SizeOf(Buffer), 0);
Path:= GetOpenFilePath;
if Length(Path)>0 then
begin
StreamLoad.Free;
StreamLoad:= TFileStream.Create(Path, fmOpenRead or fmShareExclusive);
StreamLoad.Read(Buffer, SizeOf(Buffer));
SetWindowText(hEdit, @Buffer);
end;
end;
Но....
Максимум в него влазит 136 КБ и всё ! А нужно открывать файлы до 5 Мб...
Помогите, пожалуйста.
Заранее благодарен.
← →
clickmaker (2003-07-24 10:36) [1]А что это за загадочное выражение: MAXIMUM_ALLOWED div 200 ?
Может нужно EM_LIMITTEXT послать ?
← →
Prov (2003-07-24 14:22) [2]Может быть..... Спасибо большое, буду щас пробовать.
← →
Prov (2003-07-24 14:31) [3]Блин !!! Ничего не понял ....
Извиняюсь, можна поподробнее..
← →
Anatoly Podgoretsky (2003-07-24 14:51) [4]var
Path: AnsiString; Buffer: array[1..MAXIMUM_ALLOWED div 200] of Char;
Разобраться также с 200
← →
Prov (2003-07-24 14:57) [5]Ну может, подскажите, если не затруднит, что там заместь 200 надо поставить...
Если ставлю <200, программа просто вылетает на этом(Access Violation)
← →
clickmaker (2003-07-24 15:50) [6]Вообще-то неправильно это: городить статические буфера такого размера.
Buffer := PChar(GlobalAlloc(Size, GPTR)) - так грамотнее
← →
Verg (2003-07-24 16:37) [7]
> Buffer: array[1..MAXIMUM_ALLOWED div 200] of PChar;
Это типа локальня переменная, т.е. значит в стеке. В стеке не принято размещать очень много данных, если память мне не изменяет, то на процесс по мегабайту стека отведена.
В любом случае
1. MAXIMUM_ALLOWED - величина нам неизвестная
2. Если файл размером будет больше, чем MAXIMUM_ALLOWED div 200,
в Buffer - е будет не null-terminated string и, т.о., чем
закончится SetWindowText неизвестно, может и AV
← →
Набережных С. (2003-07-24 20:43) [8]MAXIMUM_ALLOWED = $02000000. Если поделить на 200, то около того и будет. Это константа из secuity, ни к каким размерам отношения не имеющая. Если, конечно, автор вопроса ее не переопределил, что вряд-ли.
← →
Verg (2003-07-26 17:15) [9]
var S : string;
....
StreamLoad:= TFileStream.Create(Path, fmOpenRead or fmShareExclusive);
SetLength(S, StreamLoad.Size)
StreamLoad.Read(S[1], StreamLoad.Size);
SetWindowText(hEdit, Pchar(S));
....
← →
Prov (2003-07-28 09:25) [10]Спасибо Вам большое, мастера.
Всё получилось.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c