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

Вниз

KOL & WinCE   Найти похожие ветки 

 
DmitriyR   (2009-05-01 16:48) [0]

Знаю вопрос возможно глуппый но немогу найти ответа :(
Пишу прогу на FPC 2.2.2 (Lazarus) под WinCE с помощью KOL_MCK 2.80.3
Вот с KOL и возникает проблемма:
Создал на форме KOLMemo
и тут встал на грабли немогу найти как работает это мемо с файлами :(
тоесть считать из файла в мемо, сохранить из мемо в файл.
Да и еще мож кто знает как в мемо работать с Юникодом?
Мне надо открыть в мемо файл реестра (reg), отредактировать его и сохранить. Но файлы реестра идут в юникоде.
Может кто прольет свет на решение.


 
L`Autour   (2009-05-01 21:45) [1]

WideCharToMultiByte
MultiByteToWideChar


 
DmitriyR   (2009-05-03 14:49) [2]

Сам спрашивал сам и отвечаю.
Сделал вот так может и неправильно но работает:

procedure TForm1.Button1Click(Sender: PObj);
var
 F: PStream;
 N: WideString;
begin
 F:= NewReadFileStream("..\Temp\test.reg");
 While F.Position < F.Size do
 begin
   Memo1.Add(F.ReadWStrZ);
 end;
 F.Free;
end;

Тоесть чтение из файла (unicode) в мемо работает на ура без дополнительной обработки.


 
DmitriyR   (2009-05-03 15:35) [3]

А вот с сохранением возник вопрос:
rocedure TForm1.Button2Click(Sender: PObj);
var
 F: PStream;
 S: WideString;
begin
//
 F:= NewWriteFileStream("..\Temp\test.txt");
 For L:= 0 to Memo1.Count do
 begin
   S:= Memo1.Items[L]+#13+#10;
   F.WriteWStrZ(S);
 end;
 F.Free;
end;

Все бы хорошо но одно но WriteWStrZ заканчивает строку записью #0000
тоесть в коце каждой строки получается  .........#13#10#00
А вот просто WriteWStr увы нет :( мож кто знает как поправить дело или чем заменить мона?


 
Дмитрий К ©   (2009-05-03 15:59) [4]

Для сохранения:
WStrSaveToFile("test.txt", Memo1.Text);
для загрузки:
Memo1.Text := WStrLoadFromFile("test.txt");


 
DmitriyR   (2009-05-03 19:31) [5]

Дмитрий К
Спасибо за подсказку. Но твой метод непойдет :(
При загрузке Мемо получает 1 символ и приехали :(
читаю же файл Unicode а там море байтов ноликов :) вот мемо и неполучает ничего после первого же нолика :) #0

Запись тоже самое сохраняет содержимое мемо но без опятьже ноликов :) #0

С записью тоже поборолся :) порыл в KOL.pas и вуаля:
procedure TForm1.Button2Click(Sender: PObj);
var
 F: PStream;
 S: WideString;
 L: integer;
begin
//
 F:= NewWriteFileStream("..\Temp\test1.reg");
 For L:= 0 to (Memo1.Count - 2) do
 begin
   S:= Memo1.Items[L]+#13+#10;
   F.Write(S[ 1 ], (Length( S )) * 2 );
 end;
 F.Free;
end;

Тоесть предыдущий мой метод открытия и этот метод сохранения работают на ура :)
Файл первоисточник открываю и сохраняю в другой, результат идиентичны.
Одно непойму почему приходится делать : (Memo1.Count - 2) тоесть почему минус 2. но результат выдает правильный.


 
Дмитрий   (2009-05-04 16:23) [6]


> тоесть почему минус 2

нупиши минус один, какая разница. Видимо там лишний снос каретки, вот и всё


 
DmitriyR   (2009-05-04 17:59) [7]

Мало ли кому пригодится, чтоб на теже грабли не наступать.
Нарыл ошибку почему приходилось делать (Memo1.Count - 2)
Поправил терь все правильно как надо:
procedure TForm1.Button2Click(Sender: PObj);
var
F: PStream;
S: WideString;
L: integer;
begin
//
F:= NewWriteFileStream("..\Temp\test1.reg");
For L:= 0 to (Memo1.Count - 1) do
begin
  If L = (Memo1.Count - 1) then S:= Memo1.Items[L]
    else S:= Memo1.Items[L]+#13+#10;
  F.Write(S[ 1 ], (Length( S )) * 2 );
end;
F.Free;
end;

Тоесть в последней пустой строке я первоначально добовлял #13#10 что приводило к добавлению еще одной лишней строки при сохранении.
Чем чаще редактируеш тем больше в конце образовывалось пустых строк.
Теперь поправил.


 
DmitriyR   (2009-05-04 18:04) [8]

Может еще кто подскажет или ссылку на ман или пример даст
Реализации с помощью КОЛ для Мемо (Ундо, Редо, Кут, Копи, Пасте, Делете, Селект Алл).

Сильно непинайте раньше сидел на Дельфи и ВинСЕ незанимался, а тут подсел и щас приходится под FPC KOL разбирать все :(



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

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

Наверх




Память: 0.49 MB
Время: 0.009 c
2-1320124854
Mach3
2011-11-01 08:20
2012.02.12
Дождаться выполнения скрипта.


15-1318939960
И. Павел
2011-10-18 16:12
2012.02.12
Особенности инициализации переменных в C#


2-1320687478
flur
2011-11-07 20:37
2012.02.12
база paradox вставить новую запись


2-1320135606
onyx2012
2011-11-01 11:20
2012.02.12
Фильтр в Express Quantum Grid


11-1241182092
DmitriyR
2009-05-01 16:48
2012.02.12
KOL &amp; WinCE