Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-96361
Jacob
2003-09-11 23:42
2003.09.29
Реестр


1-96249
Dysan
2003-09-17 15:50
2003.09.29
Project1.dpr


3-96051
abx
2003-09-10 16:29
2003.09.29
какой тип курсора выбрать клиентский или серверный??


1-96269
Niobe
2003-09-17 11:06
2003.09.29
Про Hint


1-96219
Dubrovskyi
2003-09-17 00:52
2003.09.29
Здоровая таблица





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский