purebasic.info

PureBasic forum
Текущее время: Пт дек 15, 2017 9:14 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Ср авг 18, 2010 9:52 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6204
Благодарил (а): 16 раз.
Поблагодарили: 171 раз.
Пункты репутации: 48
Раз уже возник вопрос о переносе длинных строк в редакторе Пурика, то видимо есть смысл показать одно из решений. Кто не в теме, то поясню что требуется.
У нас есть длинная строка с операторами, текстом и т.п. нужными буковками и циферками, которые просто целиком не умещаются на экран и его приходится постоянно двигать, что бы обозреть концы строки. В других строконезависимых ЯП этой проблемы нет. Там рулят скобочки-кавычки. Бейсик отродясь язык строкозависимый - т.е. понятие "Строка" у него в ДНК, хоть и нумерацию строк в Пурике отменили :D . В VisualBasic строки можно разбивать при помощи пары символов "_"(подчеркивание) и " " ( пробел). Решим эту проблему в Пурике. Будем использовать препроцессор. Смысл в следующим - Напишем программу, которая будет запускаться сразу после нажатия на кнопку "Компиляция\Запуск" или в меню "Создать приложение". Эта программа проверит построчно наш код, найдет в нем все разбитые строки, соберет их в соответствии с правилами Пурика и передаст исправленный код компилятору для соответственно изготовления бинарника. Возникает вопрос - как наша программа узнает, что нажата кнопка "Компиляция\Запуск"? Ответ - всё уже придумано за нас. В IDE Пурика есть отличный механизм, называемый Инструменты. Собственно один из инструментов мы и напишем.
Код:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
;
; preprocessor Пкренос строк
;
#FILE_Input  = 0
#FILE_Output = 1
 File$ = ProgramParameter()
 Temp$ = GetTemporaryDirectory() + "ToolTest.pb"
 
If CopyFile(File$, Temp$)
 
  If ReadFile(#FILE_Input, Temp$)
   
    If CreateFile(#FILE_Output, File$)
      While Not Eof(#FILE_Input)
       
        Line$ = ReadString(#FILE_Input)
        If Right(Line$,2)="_ " ; Тут любая пара знаков _ или ++ или **  
          NewLine$=NewLine$+" "+Trim( Mid(Line$,1,Len(Line$)-2))
                   
        Else
          If NewLine$<>""
             NewLine$=NewLine$+" "+Trim(Line$)
             WriteStringN(#FILE_Output, NewLine$)
             NewLine$=""
             Line$=""
          EndIf
            If Line$<>""
              WriteStringN(#FILE_Output, Line$)
            EndIf
           
         EndIf
         
      Wend
   
      CloseFile(#FILE_Output)
    EndIf
 
    CloseFile(#FILE_Input)
  EndIf
   
  DeleteFile(Temp$) ; или не удаляем - если кодом надо поделиться с друзьями без препроцессора!
EndIf
 



Компилируем этот код и настраиваем новый инструмент в меню Пурика. Инструменты, настройка инструмента, новый шаблон.
- Указываем путь к нашему инструменту ( ваше_имя.exe)
- Параметр " %COMPILEFILE " ( не забудте поставить " ")
- Рабочая директория - можно не заполлнять
- Называем свой инструмент к примеру "Перенос"
- Событие запуска - Перед компиляцией\запуском
- Отмечаем - Ждать завершение работы инструмента.

Ну теперь всё! Можете разбивать строки в коде символами "_ " ( или любыми другими, которые вы выбрали в программе)и при компиляции ошибок не должно возникать.
Вообще то таким способом можно настроить написание кода как угодно. Можете хоть на Паскале писать - главное правильно написать препроцессор для Паскаля.
Если что не получилось - спрашивайте!

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 2:12 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11070
Благодарил (а): 4 раз.
Поблагодарили: 381 раз.
Пока не пробовал, но думаю что этот препроцессор не позволит нормально пользоватся отладчиком!

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 3:17 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6204
Благодарил (а): 16 раз.
Поблагодарили: 171 раз.
Пункты репутации: 48
Пётр писал(а):
этот препроцессор не позволит нормально пользоватся отладчиком!

Это понятно, что не позволит! Ведь нарушается нумерация строк, и поэтому точки останова или там пошаговое выполнение программы теряет смысл. Но ошибки компиляции выдает - хотя номера строк перевирает :D

Я так думаю, что именно схожие сложности возникают и у разработчиков Пурика - иначе такой механизм как перенос-разбивка строк был бы уже давно сделан.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 4:11 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11070
Благодарил (а): 4 раз.
Поблагодарили: 381 раз.
Я вот что подумал.
Движок редактора пурика поддерживает перенос по словам, но эта возможность не реализована.
Если реализовать, то горизонтальной полосы прокрутки не будет и отладчик будет нормально функционировать.

Короче, нужна работа с чужими окнами (в данном случае, с окном редактора), чтобы получить хендл активного редактора на текущей вкладке.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 6:38 pm 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 354
Благодарил (а): 13 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
Где то на забугорном форуме встречал код с переносом строк именно в Пурике...или я может ошибаюсь но помница мне он кажись не работал из-за "переноса" строки...

Хотя эта функция редактора была бы кстати


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 6:46 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11070
Благодарил (а): 4 раз.
Поблагодарили: 381 раз.
cherri123 писал(а):
Хотя эта функция редактора была бы кстати
Ее нужно просто активровать.
Сложность в том, что это нужно делать однократно при создании новой вкладки.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 19, 2010 5:14 am 
Не в сети
профессор

Зарегистрирован: Вт май 04, 2010 12:19 pm
Сообщений: 352
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Отладчик в норме + нет ограничений по колличеству переносов.
Просто на каждую склеенную строку добавляется пустая, чтоб нумерация не менялась.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#FILE_Input=0
#FILE_Output=1
File.s=ProgramParameter()
Temp.s=GetTemporaryDirectory()+"ToolTest.pb"
 
qqq.l
Line1.s
 
If CopyFile(File,Temp)
        If ReadFile(#FILE_Input,Temp)
               
                If CreateFile(#FILE_Output,File)
                        While Not Eof(#FILE_Input)
                                qqq=0
                                Line1=ReadString(#FILE_Input)
                               
                                While Right(Line1,1)="/"
                                        Line1=Left(Line1,Len(Line1)-1)+ReadString(#FILE_Input)
                                        qqq+1
                                Wend
                               
                                WriteStringN(#FILE_Output, Line1)
                                For i=1 To qqq
                                        WriteStringN(#FILE_Output, "")
                                Next
                               
                        Wend
                        CloseFile(#FILE_Output)
                EndIf
                CloseFile(#FILE_Input)
        EndIf
        DeleteFile(Temp)
EndIf
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 23, 2010 6:41 am 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Короче, нужна работа с чужими окнами (в данном случае, с окном редактора), чтобы получить хендл активного редактора на текущей вкладке.


Зачем? Чтоб послать контролу сообщение #SCI_SETWRAPMODE?
Так пурик же работает с Scintill'ой через dll, а не через COM... Хотя может ты имел ввиду вариант через инжект?

И еще есть также один нюанс - в jaPBe версии 2.5.xxx образца 2005 года реализован другой подход, там вместо сообщений вызываются функции, да и в недавно обновившейся GoScintilla такая же реализация, так что у Фредди тоже может подобный враппер быть...

В любом случае препроцессоры, это конечно хорошо, но все равно не хватает нормальной идешки, которую можно тонко настроить, потому что jaPBe уже давно устарел...
Я думал над этим и реально вижу только два варианта - либо сделать спец-сборку на основе Scite, либо переписывать исходники jaPBe...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 23, 2010 8:32 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11070
Благодарил (а): 4 раз.
Поблагодарили: 381 раз.
Sp01LeR писал(а):
Так пурик же работает с Scintill'ой через dll, а не через COM
И что?
Хендл редактра всё равно получить нужно чтобы послать #SCI_SETWRAPMODE.

Sp01LeR писал(а):
два варианта
Есть третий вариант - написать всё с нуля, заодно сделать пурик визуальным.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 24, 2010 5:12 am 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Есть третий вариант - написать всё с нуля, заодно сделать пурик визуальным.

Ха, этот вариант действительно лучше, не спорю... :)
Только вот, если написать IDE на пурике вроде бы не проблема, то с виз.дизайнером не все так просто...
Как правило, такие проги пишут на "богомерзком" Дельфи, а к примеру, бедноватый на функционал, пуриковский дизайнер в стандартной поставке написан на Си...
С одной стороны у Фредди должны быть исходники к нему, так что он должен был бы давно уже подпилить этот дизайнер под линейку 4.хх...
А с другой стороны - на оффсайте есть ссылка на "PureVision" - крутой визуальный редактор с дополнительными свистелками и перделками за 20 с чемто дохлых енотов...
Так что Пётр, тут уже только два варианта - или учить Delphi(а я его не перевариваю почти также, как ты Сишку) или платить буржуям денюжку, хотя может и сворованый retail можно будет через год нарыть где-то...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 24, 2010 7:54 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6204
Благодарил (а): 16 раз.
Поблагодарили: 171 раз.
Пункты репутации: 48
Sp01LeR писал(а):
такие проги пишут на "богомерзком" Дельфи, а к примеру, бедноватый на функционал, пуриковский дизайнер в стандартной поставке написан на Си...

Я вот интересуюсь, в плане исключительно повышения образованности в этом вопросе - А чего такого можно написать в Делфи, что нельзя реализовать на Си++ или на том же PureBasic?
Sp01LeR писал(а):
А с другой стороны - на оффсайте есть ссылка на "PureVision" - крутой визуальный редактор с дополнительными свистелками и перделками за 20 с чемто дохлых енотов...

И в целях дальнейшего образования - а Чем реально платный PureVision в плане использования в качестве "визуального редактора" лучше бесплатного PureForm?
Sp01LeR писал(а):
сворованый retail можно будет через год нарыть где-то

Есть рабочий keygen.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 24, 2010 9:26 am 
Не в сети
PureC Coder

Зарегистрирован: Ср май 07, 2008 5:37 pm
Сообщений: 522
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Цитата:
À ÷åãî òàêîãî ìîæíî íàïèñàòü â Äåëôè, ÷òî íåëüçÿ ðåàëèçîâàòü íà Ñè++ èëè íà òîì æå PureBasic?

Äà ÷åëîâåê íå â òåìå ïðîñòî. Âûáîð ÿçûêà ïðîèñõîäèò èç ñîîáðàæåíèé óäîáñòâà.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 24, 2010 10:20 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11070
Благодарил (а): 4 раз.
Поблагодарили: 381 раз.
kvitaliy писал(а):
Я вот интересуюсь, в плане исключительно повышения образованности в этом вопросе - А чего такого можно написать в Делфи, что нельзя реализовать на Си++ или на том же PureBasic?
У меня аналогичный вопрос.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 26, 2010 4:02 am 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
kvitaliy писал(а):
Я вот интересуюсь, в плане исключительно повышения образованности в этом вопросе - А чего такого можно написать в Делфи, что нельзя реализовать на Си++ или на том же PureBasic?

У меня аналогичный вопрос.


Дело не в том, что можно написать, а что нельзя, а в самой концепции RAD и в наличии готовых нестандартных компонентов ГУЯ!
То что на Borland Delphi можно склепать за час - на MS Visual Studio займет времени намного больше...
Хотя тот же Qt уже сейчас тоже можно считать кроссплатформенной RAD-средой, но, у него другой принцип отрисовки ГУЯ.
Что же касается Пурика - то написать на нем хотя бы аналог 3D макса, учитывая его уровень развития на данный момент, на мой взгляд практически нереально в принципе.
Хотелось бы надеятся, что в линейке PB-5.xx уже будет встроена хотя бы базовая реализация классов...

kvitaliy писал(а):
И в целях дальнейшего образования - а Чем реально платный PureVision в плане использования в качестве "визуального редактора" лучше бесплатного PureForm?


Ну, наверно только встроенными
Цитата:
свистелками и перделками
и MDI-интерфейсом, - я его не смотрел, думал там жестко ограниченная демка, но раз
kvitaliy писал(а):
Есть рабочий keygen.

то можно и его попользовать :)

А вот сам PureForm я как-то пропустил - действительно неплохой редактор и обновляется постоянно, теперь понятно, почему Фредди на стандартный забил болт...
Интересно, на чем он написан - после анпака выдало строку "TASM/MASM/FASM" - неужели на Пурике? Хотя, с другой стороны, если писал на Пурике, то почему исходники не выложил, да еще и защиту по чексумме поставил?

Да и jaPBe там же на сайте лежит обновленный, только функции "wrapline" я после беглого просмотра так и не нашел, но к нему уже исходник присутствует - так что это не проблема...

Поэтому этот вопрос "в целях дальнейшего образования" по визуальным редакторам нужно задавать Петру - ведь это он предложил
Цитата:
написать всё с нуля, заодно сделать пурик визуальным.


PS: предлагаю сделать закрепл. тему по альтернативным средствам разработки для PureBasic, я то думал что развитие jaPBe заглохло, иначе бы тему не поднимал...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 30, 2010 9:16 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Сб окт 09, 2010 2:21 am
Сообщений: 326
Откуда: Киев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
)) Работает отлично.
Единственный момент это IncludeFile
Походу придётся добавить рекурсию для замены во вложенных файлах

_________________
Win7 Enterprise x86 (PB 5.11)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB