Главная страница
    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-96372
Е-Моё имя
2003-09-10 17:34
2003.09.29
Флэймер


3-96056
Eagle Owl
2003-09-07 22:17
2003.09.29
Удаление с помощью SQL запроса


4-96500
Bless
2003-07-17 17:22
2003.09.29
Разница между сообщениями TVM_GETITEM и TVN_DISPINFO


6-96328
Batata
2003-07-30 11:18
2003.09.29
F1!!! народ не кто ни сталкивался с передачей голоса по сети!!


3-96145
John77
2003-09-08 11:31
2003.09.29
Ошибка при выполнении хранимой процедуры в MSSQL 2000





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский