Проблема с буфером для работы с текстом.
От: Moloch  
Дата: 06.02.04 01:22
Оценка:
Примитивная проблема, но что-то я торможу. Поздно, наверное. Или рано...
Ну не важно, в общем, так:
есть текстовой файл (*БОЛЬШОЙ* — это больше 30-ти МВ);
его надо прочитать в массив символов и отразить в richTextBox не меняя. С задачей прочитать справились путем FileRead.ReadtoEnd();
потом надо из массива (условно char[] FileContent) выдирать куски (скажем, по 30 кило) и производить с ними манипуляции типа удаления определенной последовательности символов (обыкновенных букв).

Так вот, как открыть — знаю.
Как потом с кусками текста поступать — тоже знаю:
System.Text.StringBuilder strOut = new System.Text.StringBuilder();
strOut.Append(tempBuff);
string str = strOut.ToString().

Не знаю одного — как мне из массива символов FileContent[richTextBox1.TextLenght] выдирать куски tempBuff[tempBuffSize], где tempBuffSize, предположим, 30KB?
Re: Проблема с буфером для работы с текстом.
От: Andy77 Ниоткуда  
Дата: 06.02.04 01:55
Оценка:
Здравствуйте, Moloch, Вы писали:

M>Не знаю одного — как мне из массива символов FileContent[richTextBox1.TextLenght] выдирать куски tempBuff[tempBuffSize], где tempBuffSize, предположим, 30KB?


Array.Copy ?
Re[2]: Проблема с буфером для работы с текстом.
От: Moloch  
Дата: 06.02.04 13:46
Оценка:
Здравствуйте, Andy77, Вы писали:
A>Array.Copy ?

А это не приведет к дополнительному пожиранию памяти?
Re[3]: Проблема с буфером для работы с текстом.
От: Poudy Россия  
Дата: 06.02.04 13:55
Оценка:
Здравствуйте, Moloch, Вы писали:

M>А это не приведет к дополнительному пожиранию памяти?

Приведет. Ну так файл же *БОЛЬШОЙ*
Re: Проблема с буфером для работы с текстом.
От: Banch  
Дата: 06.02.04 17:08
Оценка:
M> есть текстовой файл (*БОЛЬШОЙ* — это больше 30-ти МВ);
M> его надо прочитать в массив символов и отразить в richTextBox не меняя.

может не стоит все 30М сразу пихать в richTextBox?
показать первый кусок, а по мере того, как юзер будет скроллировать, дочитывать следующие
эт конечно намного сложнее, но зато показать первый кусок можно быстро
я понимаю, все зависит от задачи, но если юзер будет просмтатривать несколько больших файлов чисто поверхностно ...
Re[2]: Проблема с буфером для работы с текстом.
От: Moloch  
Дата: 06.02.04 19:42
Оценка:
Здравствуйте, Banch, Вы писали:
B>я понимаю, все зависит от задачи, но если юзер будет просмтатривать несколько больших файлов чисто поверхностно ...

Не, эти файлы — логи сервера за день, их будут очень внимательно просматривать на предмет наличия разных отклонений в работе. Так что придется файл сразу весь показывать.

А разве нельзя просто прочитать определенный массив символов из другого массива, начиная с определенной позиции? Так, чтобы не использовать Array.Copy.
Re[3]: Проблема с буфером для работы с текстом.
От: V.Petrovski Беларусь  
Дата: 09.02.04 07:55
Оценка:
Здравствуйте, Moloch, Вы писали:

M>Здравствуйте, Banch, Вы писали:

B>>я понимаю, все зависит от задачи, но если юзер будет просмтатривать несколько больших файлов чисто поверхностно ...

M>Не, эти файлы — логи сервера за день, их будут очень внимательно просматривать на предмет наличия разных отклонений в работе. Так что придется файл сразу весь показывать.


Ну тогда выводи все на печать, и пусть внимательно просматривают,
но ты ведь всеровно не покажешь больше, того что влазит на экран, так зачем все
зачитывать.

M>А разве нельзя просто прочитать определенный массив символов из другого массива, начиная с определенной позиции? Так, чтобы не использовать Array.Copy.

Можно через unsafe или через for.
... << RSDN@Home 1.1.2 stable silent>>
Re[3]: Проблема с буфером для работы с текстом.
От: Banch  
Дата: 09.02.04 10:54
Оценка:
M>А разве нельзя просто прочитать определенный массив символов из другого массива, начиная с определенной позиции? Так, чтобы не использовать Array.Copy.

в .Net нет указателей, чтоб передавать их какому-то другому методу или передават их со смещением

чтобы не хранить в памяти несколько кусков по 30М, лучше поблочно читать данные, производить над блоком нужные действия (замена, формироватирование ... ) и складывать все в StringBuilder, потом передать полученую строку в RichTextBox
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.