Конференция "KOL" » KOL & WinCE [Lazarus FPC, WinCE]
 
  • DmitriyR (01.05.09 16:48) [0]
    Знаю вопрос возможно глуппый но немогу найти ответа :(
    Пишу прогу на FPC 2.2.2 (Lazarus) под WinCE с помощью KOL_MCK 2.80.3
    Вот с KOL и возникает проблемма:
    Создал на форме KOLMemo
    и тут встал на грабли немогу найти как работает это мемо с файлами :(
    тоесть считать из файла в мемо, сохранить из мемо в файл.
    Да и еще мож кто знает как в мемо работать с Юникодом?
    Мне надо открыть в мемо файл реестра (reg), отредактировать его и сохранить. Но файлы реестра идут в юникоде.
    Может кто прольет свет на решение.
  • L`Autour (01.05.09 21:45) [1]
    WideCharToMultiByte
    MultiByteToWideChar
  • DmitriyR (03.05.09 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 (03.05.09 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 увы нет :( мож кто знает как поправить дело или чем заменить мона?
  • Дмитрий К © (03.05.09 15:59) [4]
    Для сохранения:
    WStrSaveToFile('test.txt', Memo1.Text);
    для загрузки:
    Memo1.Text := WStrLoadFromFile('test.txt');
  • DmitriyR (03.05.09 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. но результат выдает правильный.
  • Дмитрий (04.05.09 16:23) [6]

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

    нупиши минус один, какая разница. Видимо там лишний снос каретки, вот и всё
  • DmitriyR (04.05.09 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 (04.05.09 18:04) [8]
    Может еще кто подскажет или ссылку на ман или пример даст
    Реализации с помощью КОЛ для Мемо (Ундо, Редо, Кут, Копи, Пасте, Делете, Селект Алл).

    Сильно непинайте раньше сидел на Дельфи и ВинСЕ незанимался, а тут подсел и щас приходится под FPC KOL разбирать все :(
 
Конференция "KOL" » KOL & WinCE [Lazarus FPC, WinCE]
Есть новые Нет новых   [134431   +13][b:0][p:0]