Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.05.2017, 22:10
electrichesky electrichesky вне форума
Прохожий
 
Регистрация: 01.10.2013
Сообщения: 8
Версия Delphi: Delphi XE2
Репутация: 10
Восклицание Изменение строки в Буфере обмена

Ребята выручайте!

Ищу реально головастого гения, буду рад если хотя бы подскажете к кому можно обратиться с этим вопросом =(

Очень интересная загадка. Подключайтесь к ветке... давайте размышлять!

Работаю с буфером обмена, нужно заменять в нём одну строку на другую.

к примеру копирую такой текст:

note.png

в буфере он выглядит так:

111.png

я в нём меняю 111 на ^
получается так:

caret.png


Код:
var
  US1, US2: UTF8String;
  MStream: TMemoryStream;

//  то что было в буфере обмена сохраняю в zzz.dat
// далее

  MStream:=TMemoryStream.Create;
  MStream.LoadFromFile('zzz.dat'); // открываю буфер
  SetLength(US2, MStream.Size);
  MStream.Position := 0;

  MStream.Read(Putf8String(US2)^, MStream.Size);
// загружаю в US2 содержимое буфера

  US1:=Decoder(us2); // декодирую строку US2 в US1

  MStream.Position := 0;
  MStream.Write(Putf8String(US1)^, Length(US1)); // 
  mstream.SaveToFile('zzz.dat'); // сохраняюсь
  MStream.Free;

// затем загружаю это обратно в буфер

а вот декодер
Код:
function Decoder(Target: utf8String): utf8String;
begin
  Target:=StringReplace(Target,'111','^',[rfReplaceAll,rfIgnoreCase]);
  // сначала думал что этого будет достаточно, но нет! в HEX viewer есть ещё строка 1.1.1. это (31 00 31 00 31 00)

  Result:=StringReplace(Target,HexToStr('310031003100'),HexToStr('5e00'),
  //когда поменял именно её всё сработало

[rfReplaceAll,rfIgnoreCase]);
end;

вроде бы должно всё работать... НО если например в тексте вместо XYZ написано что-нибудь длинное, например: zzzzzzzzzzzzzzzzzzzzzzzzzzzz
то уже ничего не работает =(
в буфер это обратно не загружается =(

В общем, хотелось бы понять по какому принципу в буфере всё распределяется =(

почему например текст
note.png

в буфере выглядит именно так
111.png

чтоб понимать чего ещё там нужно править =(
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter