Спасибо! Попробую так.
Вопросы новичка
Сообщений 91 страница 120 из 1000
Поделиться9217.03.2010 18:48:13
Вот пример побайтового чтения файла.
Это хороший ход, раз нет решения в один ход. Большое спасибо, Петр!
Сделал так:
For i=0 To Size t1 = PeekA(*mem+i) If t1>0 Text$ +Chr(t1) EndIf Next i Debug "Text$ = " + Text$
Работает!
Поделиться9317.03.2010 18:53:06
Работает!
Работать то работает, но чем больше файл, тем медлнее работать будет.
Тормоза будут визуально заметны, если файл будет иметь размер, больше 100КБ.
Это особность работы со строками. Для добавления текста, сначала производится поиск конца строки и чем длинее строка, тем долше ищется её конец!
Поделиться9417.03.2010 18:57:46
Вот так будет работать намного быстрее с большими файлами
*TempMem=AllocateMemory(Size) CountMem=-1 For i=0 To Size t1.a = PeekA(*mem+i) If t1>0 CountMem+1 PokeA(*TempMem+CountMem,t1) EndIf Next i Text$=PeekS(*TempMem,CountMem) FreeMemory(*TempMem) Debug "Text$ = " + Text$
Поделиться9517.03.2010 20:09:30
Вот так будет работать намного быстрее с большими файлами
Красиво!!!
Поделиться9617.03.2010 22:42:46
Как можно вставить программно в редактор jaPBe текст из буфера обмена или из памяти? Окно я нашел, активизировал, а дальше не знаю ......
Поделиться9717.03.2010 23:00:55
Данные нужно слать не окну, а редактору Scintilla.
Сначала нужно найти активный редактор, а потом передать ему текст.
SendMessage_(ID, #EM_REPLACESEL, 0, @Text.s)
Поделиться9817.03.2010 23:42:15
активный редактор
Вот этого то я как раз и не знаю. куча топов , как найти чужое окно и не могу найти, как отыскать кнопки, текст, или ...
SendMessage_(ID, #EM_REPLACESEL, 0, @Text.s)
Именно так и хотел, думал если окно активизирую, можно будет вставить из буфера, но обломился.
Поделиться9918.03.2010 00:43:55
Есть один вариант, правда изващённый.
Можно узнать размеры окна jaPBe, вычислить его центр (там точно будет Scintilla) и передать эти координаты функции
Wnd = WindowFromPoint_(Cursor\X|(Cursor\Y<<32))
ну а дальше уже
SendMessage_(Wnd, #EM_REPLACESEL, 0, @Text.s)
Можно конечно сделать как положенно, но для этого, нужно немного подумать....
Поделиться10018.03.2010 01:11:26
Вот так работает, но вставляет только один символ.
Procedure jaPBe_Paste(jaPBe_ID, Text1.s) ; jaPBe_ID.l - Здесь хендл окна проги jaPBe ; Text - Вставляемый текст Result=0 : MainClass${255} Win.RECT Center.POINT GetWindowRect_(jaPBe_ID, @Win) ; Размеры окна jaPBe Center\x = (Win\left+Win\right)/2 ; Вычисляем координаты центра окна Center\y = (Win\top+Win\bottom)/2 EditID = WindowFromPoint_(Center\X|(Center\Y<<32)) If EditID GetClassName_(EditID,@MainClass$,$FF) ;получаем имя класса по хэндлу окна If LCase(MainClass$)="scintilla" SendMessage_(EditID, #EM_GETSEL, @CharPos1, @CharPos2) ; Убираем выделение, если есть выделеный текст SendMessage_(EditID, #EM_SETSEL, CharPos1, CharPos1) SendMessage_(EditID, #EM_REPLACESEL, 0, Text1) ; Вставляем текст Result=1 EndIf EndIf ProcedureReturn Result EndProcedure
Поделиться10118.03.2010 07:08:55
Спасибо Петр! Хоть от чего то буду отталкиваться. Может повезет и найду решение.
Поделиться10218.03.2010 18:31:38
Оказывается, с этим редактором изобретать велосипед и не надо. На английском форуме мне подсказали, что в папке с редактором jaPBe\Sources\Plugin есть либа base.pb для изготовления плугов.
Поделиться10318.03.2010 18:41:03
Если не секрет, почему используешь jaPBe в место стандартного редактора из дистрибутива?
Поделиться10418.03.2010 19:34:20
Если не секрет, почему используешь jaPBe в место стандартного редактора из дистрибутива?
Я не нашел DLL о которой ты мне упоминал как то. Для меня главное в написании программы это удобство. Плохая структура кода, пусть даже и моя, будет бесить меня когда начинаешь отлаживать и теряешь время на поиски той или иной части кода. А в редакторе jaPBe, автор просто умница, постарался на радость другим. Создал отличные условия для работы в этом редакторе. Начиная от ввода любой команды, появляется список возможных команд. Далее автоматом выставляется структура кода и не надо об этом заботиться. Я как то писал про линию отделяющую операторы процедуры и т д. Так вот в нем это тоже реализовано. Кроме того теперь понимаю, что есть возможность писать свои плуги. Это тоже немаловажно, поскольку что удобно для кого то, необязательно удобно для меня. И самое главное не теряется ничего из родного редактора, разве что русификкация. Но с этим делом я знаком более чем. Когда будет настрой, переведу редактор. Мне не понравился только встроенный плуг шаблоны, вот им и занимаюсь пока что.
Поделиться10518.03.2010 20:18:02
Я не нашел DLL о которой ты мне упоминал как то
Напомни что за DLLка.
Начиная от ввода любой команды, появляется список возможных команд
Это есть и в редакторе пурика.
Кроме того теперь понимаю, что есть возможность писать свои плуги.
Для стандартного редактора тоже можно. Где-то был пример, но немогу найти.
Этот плагин как раз автоматом выставлял отступы.
Поделиться10618.03.2010 20:21:49
Напомни что за DLLка.
Я неправильно выразился, плагин для автоотступа частей кода пример:
procedure
if a=4
end
endif
endprocedure
Поделиться10718.03.2010 21:01:34
Похоже я нашел этот плуг. Петр этот или был другой какой? http://www.purebasic.fr/english/viewtop … mp;start=0
Поделиться10818.03.2010 21:20:19
Похоже что он.
Поделиться10918.03.2010 22:32:06
А нормально сделано, мне понравилось, молодец автор.
Поделиться11019.03.2010 17:40:03
Если не секрет, почему используешь jaPBe в место стандартного редактора из дистрибутива?
Похоже, jaPBe при компиляции из одного и того же исходника делает более короткие файлы... По крайней мере, несколько попыток на сравнительно коротких программах дали такой результат.
Поделиться11119.03.2010 18:18:45
Похоже, jaPBe при компиляции из одного и того же исходника делает более короткие файлы...
Как такое может быть? Ведь компилятор один и тот-же!
Поделиться11219.03.2010 18:34:32
Как такое может быть? Ведь компилятор один и тот-же!
А разве не может родной редактор дописывать что нибудь дополнительно, не знаю правда с какой целью?
Поделиться11319.03.2010 18:36:36
Как такое может быть? Ведь компилятор один и тот-же!
Мне это тоже непонятно. Проверить можно на файле:
; [url=http://purebasic.mybb.ru/viewtopic.php?id=17&p=2]Вопросы новичка[/url] post 46 ; Эта процедура вызывается по таймеру два раза в секунду. Procedure DateStatusBar() Time.s = FormatDate("%hh:%ii:%ss", Date() ) ; Узнаём текущее время StatusBarText(0, 0,Time) ; Выводим его на строку состояния EndProcedure ; Открываем окно If OpenWindow(0,0,0,200,100,"Строка состояния",#PB_Window_MinimizeGadget | #PB_Window_ScreenCentered) If CreateGadgetList(WindowID(0)) ; Создаём строку состояния CreateStatusBar(0, WindowID(0)) ; Делим её на области AddStatusBarField(80) AddStatusBarField(120) StatusBarText(0, 1, " Текущее время") ; Выводим строку в область с идентификатором 1. SetTimer_(WindowID(0), 1, 500, @DateStatusBar() ) ; Вызываем функцию "SetTimer" Repeat Event=WaitWindowEvent() Until Event=#PB_Event_CloseWindow ; Вызываем функцию "KillTimer" KillTimer_(WindowID(0),1) EndIf EndIf End
Исполняемый файл у меня в одном случае получился 14, во втором 19.5 KB. Их внутреннюю структуру не смотрел.
Поделиться11419.03.2010 19:15:14
Только что попробовал.
В том и другом случае, размер был 18.5КБ
Поделиться11519.03.2010 19:42:50
Исполняемый файл у меня в одном случае получился 14, во втором 19.5 KB. Их внутреннюю структуру не смотрел.
Да.
Поделиться11620.03.2010 15:54:52
Кто нибудь, у кого есть Ollydbg запустите пожалуйста скомпилированный код, описанный ниже, из под него, меня интересует по какому адресу у вас будет прописана строка, обведенная в элипс: То есть выделить эту строку и скопировать в буфер, а потом отписать ее здесь. Прилагаю рисунок:
Сам код:
Enumeration #Window_0 EndEnumeration Procedure Open_Window_0() If OpenWindow(#Window_0, 216, 0, 600, 600, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar) EndIf EndProcedure Open_Window_0() ffff.s="12000" Debug @ffff Repeat ev=WaitWindowEvent() Until ev=#PB_Event_CloseWindow
Поделиться11720.03.2010 16:15:00
Вот
PS.
Где русификатор взял для Ollydbg?
Поделиться11820.03.2010 16:59:39
Где русификатор взял для Ollydbg?
Она частично русифицированная(в основном только меню), правда где то на каком то диске и была полностью русифицированная, но я ей пользоваться не смог. Привык уже к английской. А эту поставил просто чтобы не искать свои сборки. Да и сейчас редко пользуюсь отладчиком, разве чтоб у казуалки жадность отбить. Эту скачивал на Cracklab(тоже чья то сборка)
А вообще ЗДЕСЬ посмотри:
Выберешь себе нужную сборку(там есть и русская, но похоже тоже наполовину русифицированная.
Насчет скрина, спасибо. Адреса разные, придется в моем случае все таки через файл INI данные между EXE передавать. WriteProcessMemory слишком гиморно будет. Надо как то адрес находить, но этого программным путем я пока делать не умею.
Поделиться11920.03.2010 17:16:03
На держи полностью русифицированный EXE:
Поделиться12020.03.2010 19:17:18
Адреса разные, придется в моем случае все таки через файл INI данные между EXE передавать. WriteProcessMemory слишком гиморно будет
Ну не так всё гиморно как кажется.
Можно через командную строку передать указатель на структуру, с помощью ReadProcessMemory скопировать структуру в свой процесс, изменить данные, а затем, отправить обратно с помощью WriteProcessMemory.
А что делать собираешся?
На держи полностью русифицированный EXE:
Спасибо!
Похожие темы
Вопросы новичка (продолжение…) | Вопросы по PureBasic | 29.06.2024 |
Скорее, это теоретический вопрос о правах в директории. | OffTop | 16.09.2022 |
Вопрос по отладке | Вопросы по PureBasic | 26.01.2017 |
Три вопроса по созданию браузера. | Вопросы по PureBasic | 01.11.2010 |
вопрос о точности типов данных | Вопросы по PureBasic | 20.05.2021 |