PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)


Вопросы новичка (продолжение…)

Сообщений 931 страница 960 из 974

931

SadStar написал(а):

AddMailAttachment(#Mail, Description$, Filename$ [, MimeType$])

прогу сам пиши

есть какие нибудь примеры написания или литература по заливке тхт файла на мыло?????

Отредактировано Игорь (02.11.2015 20:16:37)

0

932

примерно так

Код:
nMail = CreateMail(#PB_Any , "My_mail_box@My_mail_server", "Мылю текстовый файл") ;mail-адрес ОтКого и ТемаПисьма
If nMail
  AddMailRecipient(nMail, "XXXX@YYYYYY", #PB_Mail_To) ;mail-адрес Кому

  If AddMailAttachment(nMail, "File Proba.txt", "Disk:\Path\Proba.txt") ;прицепить файл
    Debug "Attachment correctly added"
    If SendMail(nMail, "SMTP.server.name", 25 , 0 , "SMTPuserName", "SMTPuserPassword") ;отправить
      Debug "Mail sended Ok"
    Else
      Debug "Mail sending FAILED !!!"
    EndIf
  Else
    Debug "Attachment failed"
  EndIf
	
  FreeMail(nMail)

EndIf

0

933

Я тут справку почитал про библиотеку XML, дошёл до функции XMLNodeType() (http://www.purebasic.com/documentation/ … etype.html).

Вопрос такой: а как пользоваться #PB_XML_Instruction? Это действительно инструкция связанная с php? Или же "<?php if (...) ... ?>" там только для примера, а мне (пользователю библиотеки) нужно будет самому в коде описывать реакцию на такой узел (node)?

Отредактировано Тигрёнок (24.01.2016 13:06:42)

0

934

Это пример. В коде нужно самому интерпретировать данные.

0

935

А я про этот хмл не понял насчёт лицензии.
Таки что нужно чтобы можно было этой библиотекой пользоваться?
Не понятно мне, что они от меня требуют согласно этой лицензии.
Я так понимаю, бесплатно, это значит берёшь и пользуешсья, а они какую то непонятку требуют.

0

936

Насколько я знаю, в демо-версии есть только 3 ограничения: исходный код может быть не более 800 строк, нельзя компилировать dll-библиотеки, недоступны функции WinAPI. Весь функционал библиотек доступен без ограничений даже в ней.

Отредактировано Тигрёнок (27.01.2016 00:37:13)

0

937

newJS написал(а):

Не понятно мне, что они от меня требуют согласно этой лицензии.

Требуют указывать кто автор библиотеки. Т. е. нужно в окне "О программе" написать что использована такая-то библиотека, такого-то автора.

0

938

Теперь понятно, а то перевод кривой, и я его понял, что нужно что то в тело программы вставлять, а что и как не понял, и забил на такие библиотеки, их вроде несколько с подобными требованиями..

0

939

Вопрос про ListIconGadget() с флагом #PB_ListIcon_HeaderDragDrop.

Представим ситуацию. Пользователь работает в окне с этим самым ListIcon, устанавливает колонки как ему хочется, а потом закрывает программу. Естественно, когда он он откроет программу в следующий раз, ему захочется чтобы все колонки были расставлены также. Можно ли как-то выковырять позиции колонок после их расстановки, либо сразу сохранить их сохранить?
Справка молчит(

Отредактировано Тигрёнок (14.02.2016 11:36:38)

0

940

Код:
Global Dim colArray(5) ;<- hier die anzahl der columns die du hast beginnend bei 0
For I = 0 To 4
  colArray(I)=i
Next

Procedure window()
ListIconGadget(0,0,0,500,200,"Test1",50,#PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(0,1,"Test2",100)
AddGadgetColumn(0,2,"Test3",100)
AddGadgetColumn(0,3,"Test4",100)
AddGadgetColumn(0,4,"Test5",100)
SendMessage_(GadgetID(0),#LVM_SETCOLUMNORDERARRAY,5,@colArray(0))
EndProcedure

OpenWindow(0,0,0,500,300,"LI Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ButtonGadget(1,5,210,100,20,"show")
window()
SendMessage_(GadgetID(0),#LVM_GETCOLUMNORDERARRAY,5,@colArray(0))
For I = 0 To 4
  Debug colArray(I)
Next
Debug "------------"

Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget
    GadgetID = EventGadget()
    If GadgetID = 1
      SendMessage_(GadgetID(0),#LVM_GETCOLUMNORDERARRAY,5,@colArray(0)) 
      For I = 0 To 4
        Debug colArray(I)
      Next
      Debug "------------"
      window()
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow

+1

941

Друзья, помогите чайнику!
Как вписать окно в экран меньшего разрешения, либо создать линейки прокрутки?
Написал программу, в которой необходимо вводить большой объем данных в стартовом окне, но с удивлением обнаружил, что некоторые мониторы имеют меньшее, чем у меня разрешение. Поэтому главное окно программы просто не вмещается в экран на других ПК. Не сомневаюсь, что PB предусматривает такой вариант развития событий, но в хелпе по запросу openwindow я не нашел решения. Прошу вас, уважаемые знатоки, поделиться вашими знаниями! Заранее благодарен!

Отредактировано Рома из Харькова (16.07.2016 11:01:24)

0

942

https://www.purebasic.com/documentation … adget.html

+1

943

Большое спасибо, Петр! Это именно то, что я искал.
Кстати, может кому-то такое решение будет полезным. Открываю окно, установив нули вместо его ширины и высоты. Оно открывается на весь экран. После этого определяем ширину и высоту открытого окна командами  WindowWidth() и 
WindowHeight(). Затем вводим пропорциональные изначальным размерам коэффицииенты и просто умножаем на них все координаты и размеры. Но, я еще не придумал, что делать с рисунками определенного разрешения из файлов, вставляемых в имидж. Хоть этот способ и трудоемкий, но в тупиковом случае может помочь. )

Отредактировано Рома из Харькова (19.07.2016 00:08:19)

0

944

Есть миллисекундный таймер AddWindowTimer(#Window, Timer, Timeout). Есть ли микросекундный? Мне нужно для ModBus RTU измерить 3,5 байта на скорости 115200, это примерно 300 микросекунд.

0

945

Код:
Procedure MiniDelay(msek.d)
  Ctr1.LARGE_INTEGER 
  Ctr2.LARGE_INTEGER 
  Freq.LARGE_INTEGER 
  Overhead.LARGE_INTEGER 
  A.l 
  i.l 
  If QueryPerformanceFrequency_(Freq) 
    QueryPerformanceCounter_(Ctr1) 
    QueryPerformanceCounter_(Ctr2) 
    Overhead\lowpart = Ctr2\lowpart - Ctr1\lowpart  ; determine API overhead 
    QueryPerformanceCounter_(Ctr1)                  ; start time loop 
    While C.d < msek ; выход из цикла будет только если пройдёт указанное кол-во времени 
    a+1 
    QueryPerformanceCounter_(Ctr2) ; end time loop 
    C.d=(Ctr2\lowpart - Ctr1\lowpart - Overhead\lowpart) / Freq\lowpart 
    Wend
  EndIf 
EndProcedure 


MiniDelay(0.0003) ; Задержка 300 микросекунд (время в секундах).

0

946

Большое спасибо! Но задержка - не совсем то, что мне нужно. Алгоритм такой: во время приёма предыдущего байта я запустил таймер и при приёме текущего байта проверяю, сколько прошло времени. Если меньше 300 мкс (для скорости 115200) - то текущий байт - это следующий байт пакета, а если больше - то предыдущий байт был последним, а текущий - первый байт уже следующего пакета.
PS Удивительно, почему такой распространённый протокол отсутствует в библиотеке.

0

947

Код:
Global MeasureHiResIntervalTime.l

Procedure HiResIntervalStart()
  QueryPerformanceFrequency_(@retour)
  If retour <>0 : retour = 1 : EndIf
  QueryPerformanceCounter_(@MeasureHiResIntervalTime)  
  ProcedureReturn retour
EndProcedure

Procedure.d HiResIntervalStop()
  QueryPerformanceCounter_(@Temp)
  Difference=Temp-MeasureHiResIntervalTime
  QueryPerformanceFrequency_(@HiResTimerFrequency)
  Periode.d=1/HiResTimerFrequency
  DureeTotale.d=Difference*Periode
  ProcedureReturn DureeTotale
EndProcedure

If HiResIntervalStart()
  Delay(2)
  Debug HiResIntervalStop()
EndIf

0

948

Правильно ли я понял:

  Ctr1.LARGE_INTEGER
  Ctr2.LARGE_INTEGER
  Freq.LARGE_INTEGER

  If QueryPerformanceFrequency_(Freq)
       QueryPerformanceCounter_(Ctr1)    ;начало отсчёта
  EndIf

  If QueryPerformanceFrequency_(Freq)
       QueryPerformanceCounter_(Ctr2)    ;окончание отсчёта
       C.d=(Ctr2\lowpart - Ctr1\lowpart ) / Freq\lowpart  ;измеренное время в микросекундах
  EndIf

0

949

Предыдущий Ваш пример мне понятен по VB6.
А вот эти строки вызывают вопрос:
  QueryPerformanceFrequency_(@retour)   ;получаем частоту процессора и
  If retour <>0 : retour = 1 : EndIf            ;устанавливаем её в единицу?

0

950

Вставил в текст программы QueryPerformanceFrequency_(Freq) и вывел показания Freq в окошко: 4459220. Частота процессора 1,6 ГГц.  Как это объяснить? Freq.LARGE_INTEGER.

0

951

Владимир написал(а):

Как это объяснить?

Функция не возвращает частоту процессора.
QueryPerformanceFrequency
QueryPerformanceCounter

0

952

Спасибо большое!
И ещё вопрос:

Global Freq.LARGE_INTEGER

If OpenWindow(0, 0, 0, 460, 250, "Измеритель частоты", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TextGadget(0, 40, 60, 120, 20, "Значение Freq")
  TextGadget(1, 250, 60, 190, 20, "")            ;значение Freq
  TextGadget(2, 40, 100, 120, 20, "Значение  Freq\lowpart")           
  TextGadget(3, 250, 100, 190, 20, "")           ;значение Freq\lowpart
  Repeat
    If QueryPerformanceFrequency_(Freq)
      SetGadgetText(1,Str(Freq))
      SetGadgetText(3,Str(Freq\lowpart))     
    EndIf
      Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf
End

Почему не совпадают значения Freq и Freq\lowpart ? К тому же Freq "плывёт", а Freq\lowpart  стабильно?

0

953

Владимир написал(а):

Почему не совпадают значения Freq и Freq\lowpart

Потому что Freq это адрес структуры в памяти, а Freq\lowpart значение что вернула функция QueryPerformanceFrequency.

Владимир написал(а):

К тому же Freq "плывёт"

Изменяется? Такого не должно быть, т. к. в коде экземпляр структуры не пересоздается.

0

954

Спасибо за разъяснение. Я считал Freq 64-разрядным числом, а Freq\lowpart его младшей 32-разрядной частью. Ещё. В папке "Примеры/Порты/СОМ" я попытался открыть файл COM_IO.pb, но получил в ответ: "Строка 17:ComInputBufferCount () не является функцией, массивом, макросом или связным списком". Что нужно доустановить, чтобы заработало в версии Purebasic 5.31? Будет ли работать в XP и Win7?

0

955

Это функция из библиотеки MVCOM.

0

956

Пётр написал(а):

Это функция из библиотеки MVCOM.

Понял, спасибо!

0

957

В VB6 есть свойство "невидимость". Если в свойствах элемента поставить соотв. галочку, он становится невидимым на форме и не получает фокус ввода. Есть ли в аналог Purebasic'е?

0

958

https://www.purebasic.com/documentation … adget.html

0

959

Пётр написал(а):

https://www.purebasic.com/documentation … adget.html

Спасибо!

0

960

Доброго времени суток, давно не был здесь, и не занимался программированием.. лет шесть

Вот хотел  вспомнить

мне нужно например вызвать браузер гугл и сделать клик по ссылке.

вызвыть браузер я вспомнил, а вот с кликом не все так просто,.

вот простой код
например в гугле у меня стоит по умолчанию главная страница nigma.ru
и с нее например программа нажимает на ссылу mail.ru

Код:
Prog=RunProgram("chrome.exe","","",#PB_Program_Open)
Delay (52000)
RunProgram("https://mail.ru/")
Delay(62000)
KillProgram(Prog)
CloseProgram(Prog)

Все работает, но новое окно открывается уже в браузере firefox, это уже как то неправильно,
не удалять же из за этого firefox,
как сделать что бы переход осуществлялся только в гугл хроме?

пока не разобрался например с опцией HyperLinkGadget может она будет лучше, RunProgram("https://mail.ru/") ?

или проще сделать  имитацию клика мышью?

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

Зарание спасибо

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)