Форум
Написать нам
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: as-master  
Работа с буфером
ZyXp10itДата: Пятница, 25 Июля 2008, 10:18 | Сообщение # 1
Поднаторевший
Группа: Проверенные
Сообщений: 60
Репутация: 0
Награды: 0
Статус: Offline
Ситация: в буфере лежат данные по типу
Дата1 <Tab> Наименование1
Дата2 <Tab> Наименование2
...
Подскажите скрипт, как их быстро разделить построчно и сохранить в тектовый файл с произвольными разделителями.

P.S. Для того, чтобы вытащить проект из скомпилированного экзешника (если там нет secure level) - достаточно всего лишь сохранить оверлей ;)

 
toizyДата: Пятница, 25 Июля 2008, 10:49 | Сообщение # 2
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Какие проблемы со скриптом? Свой-то вариант есть, или ты вообще не знаешь, как сделать то, что ты хочешь?

Про оверлей знаем


Жизнь оказалась не такой уж и забавной, как поначалу...
 
ZyXp10itДата: Пятница, 25 Июля 2008, 14:05 | Сообщение # 3
Поднаторевший
Группа: Проверенные
Сообщений: 60
Репутация: 0
Награды: 0
Статус: Offline
Своего варианта нет, т.к. с буфером никогда в MMB не работал - а очень надо....

Добавлено (25 Июль 2008, 14:05)
---------------------------------------------
Помог плагин RestrictClipboard на вашем сайте...
А вручную (через скрипт) кто-нибудь знает как сделать???

 
Alex3AДата: Пятница, 25 Июля 2008, 14:51 | Сообщение # 4
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Какие проблемы, замени код <Tab> на код разделителя.
Quote (ZyXp10it)
Дата1 <Tab> Наименование1

А вообще, как они туда попали и зачем.
Если по копи-пасте мануально то ничего, а если из одного пректа в другой
то есть гораздо более умные методы. К примеру мой плагин caller, и для локала и
для любой сети.
 
basmeДата: Воскресенье, 27 Июля 2008, 19:23 | Сообщение # 5
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
На каком конкретно этапе проблемы? Непонятно как вытащить из буфера, или разделить и заменить разделитель?
Quote (Alex3A)
К примеру мой плагин caller

Ему же вроде надо именно через скрипт, а так он и RestrictClipboard юзал.
 
Alex3AДата: Воскресенье, 27 Июля 2008, 23:38 | Сообщение # 6
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (basme)
Ему же вроде надо именно через скрипт, а так он и RestrictClipboard юзал.

А он, caller, без всякого буфера обмена - ТСР протокол.
 
ZyXp10itДата: Понедельник, 28 Июля 2008, 11:51 | Сообщение # 7
Поднаторевший
Группа: Проверенные
Сообщений: 60
Репутация: 0
Награды: 0
Статус: Offline
Все с буфером разобрался, всем спасибо, тему можно закрывать...
Новый вопрос в новой теме smile


 
OlegДата: Воскресенье, 29 Ноября 2009, 13:12 | Сообщение # 8
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
Здравствуйте, как загрузить каждую строку прямо из буфера в отдельный текст? В буфере лежит
Имя Фамилия
Улица №д
Индекс Город
а ещё лучше нижнюю строку разделить на 2 текста.
 
DEMBELДата: Воскресенье, 29 Ноября 2009, 13:20 | Сообщение # 9
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Собственно, когда вы получаете содержимое буфера обмена в переменную content$
Clipboard("GET","content$")
тут весь вопрос в операциях над этой строковой переменной, как ее разделить на части. Щас попробуем поделить ее...




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
SowerДата: Воскресенье, 29 Ноября 2009, 13:26 | Сообщение # 10
Ветеран форума
Группа: Проверенные
Сообщений: 916
Репутация: 11
Награды: 3
Статус: Offline
вот так

Code
Clipboard("GET","f$")
a=StrToFile(<Embedded>\temp.txt,f$,1,1)
read$=StrFromFile(<Embedded>\temp.txt,1,1)


Сообщение отредактировал Sower - Воскресенье, 29 Ноября 2009, 14:02
 
DEMBELДата: Воскресенье, 29 Ноября 2009, 13:28 | Сообщение # 11
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Sower)
вот так

ну кстати вариант - пишете содержимое в файл, и читаете оттуда построчно.
Проверим, можно ли обойтись без файла...

Можно. Используем только преобразования в строке.

Заменяем переводы строк и пробелы на символ |

Code
Clipboard("GET","string$")
fs$=CHR(32)
ts$='|'
string$=StrChange(string$,fs$,ts$)
fs$=CHR(13)+CHR(10)
string$=StrChange(string$,fs$,ts$ )
Message("","string$")

На выходе получаем массив данных, разделенных символом |
Имя|Фамилия|Улица|№д|Индекс|Город

Из массива вытаскиваем с помощью
Item$ = GetArrayItem(string$,|,x)
где x - порядковый номер записи в массиве.

Code
Например, вернем все элементы массива в цикле:
For x=1 To 6  
Item$ = GetArrayItem(string$,|,x)
Message("","Item$")
Next x

Имейте в виду, скрипт адаптирован для указанного содержимого:
Имя Фамилия
Улица №д
Индекс Город

Если вы понимаете принцип скрипта, исправите под свои нужды, чтобы разделители были в нужных местах. Если нет, то в случае отсутствия разделителей (или их удвоения) в результирующей строке выложите точное содержимое буфера которое требуется обработать.




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
OlegДата: Воскресенье, 29 Ноября 2009, 14:05 | Сообщение # 12
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
так всё работает, но мне надо разделить 4 сроки в буфере на 4 текста или эдитбокса
конечно лучше без фаила :)


Сообщение отредактировал Oleg - Воскресенье, 29 Ноября 2009, 14:09
 
DEMBELДата: Воскресенье, 29 Ноября 2009, 14:19 | Сообщение # 13
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Oleg)
4 сроки в буфере на 4 текста

тогда в скрипте замените на палки | только перевод строки CHR(13)+CHR(10)
пробелы CHR(32) не трогайте

Добавлено (29 Ноябрь 2009, 14:19)
---------------------------------------------
покажите несколько типичных содержимых своего буфера обмена чтобы точно сказать как делать




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
OlegДата: Воскресенье, 29 Ноября 2009, 14:23 | Сообщение # 14
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
Это так и есть
Имя Фамилия
Улица №д
Индекс Город
иногда вот так
Имя Фамилия

Улица №д
Индекс Город

 
DEMBELДата: Воскресенье, 29 Ноября 2009, 14:31 | Сообщение # 15
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
а зачем тогда вам всю эту чушь с буфером городить? можно же просто написать все это.



Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
OlegДата: Воскресенье, 29 Ноября 2009, 14:42 | Сообщение # 16
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
Просто приходится мнго заполнять, а потом печатать, какбы заполнение бланков.
 
SowerДата: Воскресенье, 29 Ноября 2009, 14:51 | Сообщение # 17
Ветеран форума
Группа: Проверенные
Сообщений: 916
Репутация: 11
Награды: 3
Статус: Offline
А откуда заполняется, с какихто бумаг или информация для заполнения в электронном виде?
 
OlegДата: Воскресенье, 29 Ноября 2009, 15:02 | Сообщение # 18
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
Да в электронном виде адреса, нужно переписать на бланки и распечатать, думаю так буду в четверть меньше времени тратиь(надеюсь)
 
Alex3AДата: Воскресенье, 29 Ноября 2009, 15:13 | Сообщение # 19
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Oleg, разбиение строки из буфера обмена это только отдельный алгоритм, если бы тебя интересовал именно он, скажем в чисто познавательных целях, то в принципе ты получил достаточный ответ. Но я так понимаю, что у тебя другие цели, реализовать какой то более сложный алгоритм, вот с его описания и нужно начинать.
Так что опиши проблему своим языком, сначала надо разобратся с самой идеей, а затем
с механизмами ее реализации.
 
OlegДата: Понедельник, 30 Ноября 2009, 18:54 | Сообщение # 20
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
План наполеоновский, есть адреса которые пишу на конверты,бланки потом печатаю, а идея в том что копирую адрес в буфер, кнопкой вставляю в эдитбоксы которые расположены в нужных местах потом на печать.
DEMBEL предложил подходящий вариант, но почемуто мои 3 строчки копировать надо с 4ой строки, тогда ок. если как надо, то в массиве нету в конце палки
Имя Фамилия|Улица №д|Индекс Город
соответственно Индекс Город не пишется
вот код

Code
Clipboard("GET","string$")
fs$=CHR(13)+CHR(10)
ts$='|'
string$=StrChange(string$,fs$,ts$)
Item1$ = GetArrayItem(string$,|,1)
Item2$ = GetArrayItem(string$,|,2)
Item3$ = GetArrayItem(string$,|,3)
LoadText("Text1","Item1$")
LoadText("Text2","Item2$")
LoadText("Text3","Item3$")
LoadText("EditBox1","string$" )

можеть подправите.

 
YURIYДата: Понедельник, 30 Ноября 2009, 19:10 | Сообщение # 21
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Oleg)
Имя Фамилия|Улица №д|Индекс Город
соответственно Индекс Город не пишется

Чтобы получить последний элемент через GetArrayItem, в конце строки также должен стоять делимитер:

Имя Фамилия|Улица №д|Индекс Город|



Вечная память Андрею Сергееву!
 
OlegДата: Понедельник, 30 Ноября 2009, 19:14 | Сообщение # 22
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
Так и я о томже что палки в конце нет, а как заполучить мне этот делимитер?
 
YURIYДата: Понедельник, 30 Ноября 2009, 19:18 | Сообщение # 23
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
А в чём проблема? К строке присоединить "палку" не получается?

Code
string$=string$+'|'

Добавлено (30 Ноябрь 2009, 19:18)
---------------------------------------------

Quote (Oleg)
Так и я о томже что палки в конце нет

Quote (Oleg)
если как надо, то в массиве нету в конце палки

аа, пардон. Невнимательно прочёл.



Вечная память Андрею Сергееву!
 
OlegДата: Понедельник, 30 Ноября 2009, 19:22 | Сообщение # 24
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
пробывал не шло redface :redface: .Попробую ещё раз.
Проверил точно не идёт, потомучто букву потерял %)
Буду внимательнее, пасибо.


Сообщение отредактировал Oleg - Понедельник, 30 Ноября 2009, 19:27
 
Alex3AДата: Понедельник, 30 Ноября 2009, 19:26 | Сообщение # 25
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (Oleg)
а идея в том что копирую адрес в буфер

А откуда копирую, я же не зря тебя спрашивал расказать подробно, возможно никакого буфера, палок, разделителей и не понадобится.
 
YURIYДата: Понедельник, 30 Ноября 2009, 19:28 | Сообщение # 26
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Кстати, меня этот вопрос тоже интересует. И мне кажется, что здесь такой огород выходит, который совсем не нужен.


Вечная память Андрею Сергееву!
 
OlegДата: Понедельник, 30 Ноября 2009, 19:33 | Сообщение # 27
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
На мыло приходит адрес и № артикля, пакет надо отправить но сначала надо заполнить конверт или пакет
 
YURIYДата: Понедельник, 30 Ноября 2009, 19:34 | Сообщение # 28
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
И Вы выделяете в письме эти данные и копируете их в буфер? Так выходит? Затем уже обрабатываете в MMB?


Вечная память Андрею Сергееву!
 
OlegДата: Понедельник, 30 Ноября 2009, 19:39 | Сообщение # 29
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
да, пока на лучше фантазии не хватает, а можеть и ума.
Подскажите если можно какнибудть проще сделать :)
 
DEMBELДата: Понедельник, 30 Ноября 2009, 19:55 | Сообщение # 30
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
что-то я не догоняю до конца... опишите подробнее в деталях весь алгоритм вашей работы (что, куда, зачем...), тогда может подскажем. явно тут можно оптимизировать.



Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: