Чтение бинарного файла в TMemo.
Проблема в том, что про заталкивании в тупую этих данных в TMemo, не отображаются переносы строк, весь текст записывается одной сплошной строкой, а переводы на новую строку заменяются квадратиками.
Вот пример.
Так правильно:
04:26:10
1225,317,Too many frame errors
HALFID=A- ACTIVE TYPOBJ=T3- LINE OBJNME= 24
LINENUM= 24 CAUSE=11 DIAG=90 LINSTS=OP JUNC=83 TYPETCD= 5
>>
---EVE,UK011 ,2006-12-17 04:27:52
1226,317,Too many frame errors
HALFID=A- ACTIVE TYPOBJ=T3- LINE OBJNME= 24
LINENUM= 24 CAUSE=11 DIAG=90 LINSTS=OP JUNC=83 TYPETCD= 5
>>
А так отображается в TMemo:
04:26:10 1225,317,Too many frame errors HALFID=A- ACTIVE TYPOBJ=T3- LINE OBJNME= 24 LINENUM= 24 CAUSE=11 DIAG=90 LINSTS=OP JUNC=83 TYPETCD= 5 >> ---EVE,UK011 ,2006-12-17 04:27:52 1226,317,Too many frame errors HALFID=A- ACTIVE TYPOBJ=T3- LINE OBJNME= 24LINENUM= 24 CAUSE=11 DIAG=90 LINSTS=OP JUNC=83 TYPETCD= 5 >>
Подскажите плз, как решить проблему.
ЗЫ. Для открытия файла применял TMemoryStream.LoadFromFile().
Вообще, по идее, коль уж это бинарный файл, надо его самому переводить в текст.
ЗЫ. Для открытия файла применял TMemoryStream.LoadFromFile().
а чем не устраивает TMemo.Lines.LoadFromFile()
в качестве одного из решений можно предложить перед загрузкой в МЕМО прочесать побайтово файл и вставить 0x0D перед каждым 0x0A
Не устраивает тем, что в мемо надо загружать не весь файл, а лишь отслеживать его изменения.
в качестве одного из решений можно предложить перед загрузкой в МЕМО прочесать побайтово файл и вставить 0x0D перед каждым 0x0A
Ну, собственно я это сделал только вот в такой способ:
MainForm.logMemo.Lines.Add(AnsiReplaceStr(buffer,#10,#13#10));
Все, нормально, только в конце появляется символ с кодом 0x16 (в виде пустого квадратика). Причем всегда, даже если прогонять простой текстовый файл с нормальными переводами строк (#13#10).
Даже если делать совсем тупо, ну типа так:
b := '';
for i := 1 to length(buffer) do
begin
if buffer = #10 then
b := b + #13 + buffer
else
b := b + buffer;
end;
Все-равно в конце вылазит это символ.
З.ы. Сам файл редактировать нельзя.
MainForm.logMemo.Lines.Add(AnsiReplaceStr(buffer,#10,#13#10));
А чем AdjustLineBreaks не подходит?