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

Вниз

Интересные вопросы по Richedit   Найти похожие ветки 

 
warman ©   (2003-12-01 22:14) [0]

Для своего текстового редактора я использую стандартный
TRichEdit и столкнулся с некоторыми сложностями. Я начинающий
программист и прошу помощи у Вас, супер программеры! А вопросы
следующие:

1. Необходимо полностью загрузить в Richedit файл,
"невзирая" на его содержимое (.Plaintext=true), а
потом, например, подредактировав, сохранить обратно.
Такие файлы как ".exe", ".rar" и другие с кучей системных символов упорно не желают загружаються полностью (грузится
только кусок, словно загрузка прекращается, дойдя до какого-нибудь хитрого байта :). Загружаю через LoadFromFile
или LoadFromStream. Как решить эту проблему? В принципе,
не важно, будут отображаться некоторые символы или нет,
но главное, чтобы сохранялась целостность загружаемого
файла.

2. Хотелось бы сделать следующее: когда пользователь
прокручивает текст в окне RichEdit (за скролл, клавишами
вниз, END, PgDown и т.д. и т.п), или программно текст прокручивается, печатается текст или вставляется из буфера -
т.е. при любой операции с текстом, где-нибудь (например
на "caption" формы) отображалось позиция видимого
текста, например, в процентах относительно текущего количества
Lines в RichEdit. Я подозреваю, что как-то можно "поймать" индекс видимой верхней строки, или повозиться со
ScrollBar, но знаний не хватает. Помогите plz...

3. И последний вопрос. Подскажите пожалуйста способ, как более или менее быстро загрузить большой файл в RichEdit? А то при
загрузке 700-кб. файла через LoadFromFile мой P4-2.8 GHz
задумывается на 3-4 минуты...

P.S. Я понимаю, что на свете есть отличные компоненты, но
хотелось бы решить эти задачи стандартными средствами Delphi.
Если у Вас есть какие-то примеры, киньте пожалуйста на
мыло.

Заранее благодарен за любую помощь.


 
warman ©   (2003-12-01 22:55) [1]

В RichEdit пробовал грузить файло так:

procedure TForm1.OpenF;
begin
if open1.Execute=true then
begin
try
richedit1.Lines.LoadFromFile(open1.FileName);
except
end;
end;
end;

{procedure TForm1.OpenF;
var
InFS: TFileStream;
begin
if open1.Execute=true then
begin
RichEdit1.Perform(EM_LIMITTEXT, 2147483647 , 0);
form1.Caption:="0%";
panel1.Caption:=open1.FileName;
panel1.Hint:=open1.FileName;
InFS:=TFileStream.Create(open1.FileName,fmOpenRead);
try
richedit1.Lines.LoadFromStream(InFS);
except
end;
Opened:=true;
n8.Enabled:=true;
InFS.Free;
end;
end;}

{procedure TForm1.OpenF;
var
TheMStream : TMemoryStream;
Zero : char;
begin
if open1.Execute=true then
begin
TheMStream := TMemoryStream.Create;
TheMStream.LoadFromFile(open1.FileName);
TheMStream.Seek(0, soFromEnd);
Zero := #0;
TheMStream.Write(Zero, 1);
TheMStream.Seek(0, soFromBeginning);
Richedit1.SetSelTextBuf(TheMStream.Memory);
TheMStream.Free;
end;
end;}


 
хз ©   (2003-12-01 23:00) [2]

procedure TForm1.OpenF;
begin
if open1.Execute=true then
begin
try
richedit1.Lines.LoadFromFile(open1.FileName);
except
end;
end;
end;

Гениально. Смысл конструкции try...except?


 
warman ©   (2003-12-01 23:21) [3]

-----------------------
Смысл конструкции try...except?
-----------------------
Да просто так, хотел потом еще чего-нибудь добавить,
потенциально ошибкоопасного :) Это не главное.
Подсказал бы лучше чего-нибудь по вопросам, критиковать
любой может...


 
хз ©   (2003-12-01 23:54) [4]

А по вопросам подсказывать нечего. FAQ + F1 + я понимаю, что "хотелось бы решить эти задачи стандартными средствами Delphi", но эти задачи проще решать сторонними компонентами.


 
Viktor Kushnir ©   (2003-12-02 08:14) [5]

Хитрый байт - это наверно байт с кодом 0


 
alena.svt ©   (2003-12-02 10:52) [6]

Сейчас на Celeron - 600
Взяла из стандартных Demos
..\Borland\DELPHI7\Demos\Richedit\Richedit.exe
Загрузила 2,5 mb
Грузилось 6 сек.
Посмотри может у тебя какой то процесс жрет много.


 
NikeOLD   (2003-12-02 12:41) [7]


> 2. Хотелось бы сделать следующее: когда пользователь
> прокручивает текст в окне RichEdit (за скролл, клавишами
> вниз, END, PgDown и т.д. и т.п), или программно текст прокручивается,
> печатается текст или вставляется из буфера -
> т.е. при любой операции с текстом, где-нибудь (например
> на "caption" формы) отображалось позиция видимого
> текста, например, в процентах относительно текущего количества
> Lines в RichEdit. Я подозреваю, что как-то можно "поймать"
> индекс видимой верхней строки, или повозиться со
> ScrollBar, но знаний не хватает. Помогите plz...

Не используй скролл-бар RichEdit"а, возьми обычный скролл-бар и привяжи его к тексту. А вообще это тоже сложновато... Подозреваю, что без API ты не получишь результат. Но подобную задачу мне выполнять не требовалось никогда, так что могу и ошибаться :-)


 
NikeOLD   (2003-12-02 12:46) [8]


> 2. Хотелось бы сделать следующее: когда пользователь
> прокручивает текст в окне RichEdit (за скролл, клавишами
> вниз, END, PgDown и т.д. и т.п), или программно текст прокручивается,
> печатается текст или вставляется из буфера -
> т.е. при любой операции с текстом, где-нибудь (например
> на "caption" формы) отображалось позиция видимого
> текста, например, в процентах относительно текущего количества
> Lines в RichEdit. Я подозреваю, что как-то можно "поймать"
> индекс видимой верхней строки, или повозиться со
> ScrollBar, но знаний не хватает. Помогите plz...

Не используй скролл-бар RichEdit"а, возьми обычный скролл-бар и привяжи его к тексту. А вообще это тоже сложновато... Подозреваю, что без API ты не получишь результат. Но подобную задачу мне выполнять не требовалось никогда, так что могу и ошибаться :-)


 
Ru ©   (2003-12-02 13:29) [9]

1 существует понятие "невидимые символы" (см Word)
2 бр-р, потом подумаю
3 хз (это не ник, а сокращение)

по поводу 2: см. фак про позицию курсора и используй: RichEdit.Lines.Count; - получишь число строк 8)



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
3-36556
Степан
2003-11-20 19:24
2003.12.12
ADO, пустая таблица


7-36869
Николашка
2003-10-03 11:44
2003.12.12
Interrupt 21h Function 440Dh Minor Code 4Ah


9-36498
loto
2003-05-20 21:23
2003.12.12
(OpenGL) текстура и материал на разных гранях одного куба


1-36693
Myrs
2003-12-02 17:28
2003.12.12
Переменная-функция


1-36764
Алексей Глеб
2003-12-01 19:13
2003.12.12
Текущий видеорежим