AddMailAttachment(#Mail, Description$, Filename$ [, MimeType$])
прогу сам пиши
есть какие нибудь примеры написания или литература по заливке тхт файла на мыло?????
Отредактировано Игорь (02.11.2015 20:16:37)
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)
AddMailAttachment(#Mail, Description$, Filename$ [, MimeType$])
прогу сам пиши
есть какие нибудь примеры написания или литература по заливке тхт файла на мыло?????
Отредактировано Игорь (02.11.2015 20:16:37)
примерно так
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
Я тут справку почитал про библиотеку XML, дошёл до функции XMLNodeType() (http://www.purebasic.com/documentation/ … etype.html).
Вопрос такой: а как пользоваться #PB_XML_Instruction? Это действительно инструкция связанная с php? Или же "<?php if (...) ... ?>" там только для примера, а мне (пользователю библиотеки) нужно будет самому в коде описывать реакцию на такой узел (node)?
Отредактировано Тигрёнок (24.01.2016 13:06:42)
Это пример. В коде нужно самому интерпретировать данные.
А я про этот хмл не понял насчёт лицензии.
Таки что нужно чтобы можно было этой библиотекой пользоваться?
Не понятно мне, что они от меня требуют согласно этой лицензии.
Я так понимаю, бесплатно, это значит берёшь и пользуешсья, а они какую то непонятку требуют.
Насколько я знаю, в демо-версии есть только 3 ограничения: исходный код может быть не более 800 строк, нельзя компилировать dll-библиотеки, недоступны функции WinAPI. Весь функционал библиотек доступен без ограничений даже в ней.
Отредактировано Тигрёнок (27.01.2016 00:37:13)
Не понятно мне, что они от меня требуют согласно этой лицензии.
Требуют указывать кто автор библиотеки. Т. е. нужно в окне "О программе" написать что использована такая-то библиотека, такого-то автора.
Теперь понятно, а то перевод кривой, и я его понял, что нужно что то в тело программы вставлять, а что и как не понял, и забил на такие библиотеки, их вроде несколько с подобными требованиями..
Вопрос про ListIconGadget() с флагом #PB_ListIcon_HeaderDragDrop.
Представим ситуацию. Пользователь работает в окне с этим самым ListIcon, устанавливает колонки как ему хочется, а потом закрывает программу. Естественно, когда он он откроет программу в следующий раз, ему захочется чтобы все колонки были расставлены также. Можно ли как-то выковырять позиции колонок после их расстановки, либо сразу сохранить их сохранить?
Справка молчит(
Отредактировано Тигрёнок (14.02.2016 11:36:38)
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
Друзья, помогите чайнику!
Как вписать окно в экран меньшего разрешения, либо создать линейки прокрутки?
Написал программу, в которой необходимо вводить большой объем данных в стартовом окне, но с удивлением обнаружил, что некоторые мониторы имеют меньшее, чем у меня разрешение. Поэтому главное окно программы просто не вмещается в экран на других ПК. Не сомневаюсь, что PB предусматривает такой вариант развития событий, но в хелпе по запросу openwindow я не нашел решения. Прошу вас, уважаемые знатоки, поделиться вашими знаниями! Заранее благодарен!
Отредактировано Рома из Харькова (16.07.2016 11:01:24)
Большое спасибо, Петр! Это именно то, что я искал.
Кстати, может кому-то такое решение будет полезным. Открываю окно, установив нули вместо его ширины и высоты. Оно открывается на весь экран. После этого определяем ширину и высоту открытого окна командами WindowWidth() и
WindowHeight(). Затем вводим пропорциональные изначальным размерам коэффицииенты и просто умножаем на них все координаты и размеры. Но, я еще не придумал, что делать с рисунками определенного разрешения из файлов, вставляемых в имидж. Хоть этот способ и трудоемкий, но в тупиковом случае может помочь. )
Отредактировано Рома из Харькова (19.07.2016 00:08:19)
Есть миллисекундный таймер AddWindowTimer(#Window, Timer, Timeout). Есть ли микросекундный? Мне нужно для ModBus RTU измерить 3,5 байта на скорости 115200, это примерно 300 микросекунд.
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 микросекунд (время в секундах).
Большое спасибо! Но задержка - не совсем то, что мне нужно. Алгоритм такой: во время приёма предыдущего байта я запустил таймер и при приёме текущего байта проверяю, сколько прошло времени. Если меньше 300 мкс (для скорости 115200) - то текущий байт - это следующий байт пакета, а если больше - то предыдущий байт был последним, а текущий - первый байт уже следующего пакета.
PS Удивительно, почему такой распространённый протокол отсутствует в библиотеке.
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
Правильно ли я понял:
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
Предыдущий Ваш пример мне понятен по VB6.
А вот эти строки вызывают вопрос:
QueryPerformanceFrequency_(@retour) ;получаем частоту процессора и
If retour <>0 : retour = 1 : EndIf ;устанавливаем её в единицу?
Вставил в текст программы QueryPerformanceFrequency_(Freq) и вывел показания Freq в окошко: 4459220. Частота процессора 1,6 ГГц. Как это объяснить? Freq.LARGE_INTEGER.
Как это объяснить?
Функция не возвращает частоту процессора.
QueryPerformanceFrequency
QueryPerformanceCounter
Спасибо большое!
И ещё вопрос:
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 стабильно?
Почему не совпадают значения Freq и Freq\lowpart
Потому что Freq это адрес структуры в памяти, а Freq\lowpart значение что вернула функция QueryPerformanceFrequency.
К тому же Freq "плывёт"
Изменяется? Такого не должно быть, т. к. в коде экземпляр структуры не пересоздается.
Спасибо за разъяснение. Я считал Freq 64-разрядным числом, а Freq\lowpart его младшей 32-разрядной частью. Ещё. В папке "Примеры/Порты/СОМ" я попытался открыть файл COM_IO.pb, но получил в ответ: "Строка 17:ComInputBufferCount () не является функцией, массивом, макросом или связным списком". Что нужно доустановить, чтобы заработало в версии Purebasic 5.31? Будет ли работать в XP и Win7?
Это функция из библиотеки MVCOM.
Это функция из библиотеки MVCOM.
Понял, спасибо!
В VB6 есть свойство "невидимость". Если в свойствах элемента поставить соотв. галочку, он становится невидимым на форме и не получает фокус ввода. Есть ли в аналог Purebasic'е?
https://www.purebasic.com/documentation … adget.html
Спасибо!
Доброго времени суток, давно не был здесь, и не занимался программированием.. лет шесть
Вот хотел вспомнить
мне нужно например вызвать браузер гугл и сделать клик по ссылке.
вызвыть браузер я вспомнил, а вот с кликом не все так просто,.
вот простой код
например в гугле у меня стоит по умолчанию главная страница 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 ) плаващуе время например от двух минут до пяти минут?
что бы при при каждом последующем запуске программы время перехода по ссылке было произвольным.
Зарание спасибо
Какая версия? | OffTop | 03.10.2021 |
Мне постоянно пищет вот это | Вопросы по PureBasic | 14.10.2011 |
Размер экрана в пикселях | Вопросы по PureBasic | 13.02.2011 |
консоль | Вопросы по PureBasic | 19.03.2015 |
Полноэкранные приложения на purebasic | Вопросы по PureBasic | 08.03.2011 |
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)