PureBasic - форум

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

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


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


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

Сообщений 781 страница 810 из 974

781

Про аргументы за позицию в окне я понял.........а а сам код............на пурике.....чего то я запутался в нем........пример можно.........?

0

782

Чем не подошел пример из справки? http://purebasic.ru/manual.php?id=477&lng=rus

0

783

Пётр        Спасибо.......разобрался...

0

784

Я хочу реализовать в консоле на Пурике такую команду: "echo=" и после равно какой-нибудь текст. Если ввести эту команду, на экран выведится сам Текст.

0

785

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

Я хочу реализовать в консоле на Пурике такую команду: "echo="

Дружище, ты попутал синтаксис - DOS команды и Пурик это разные вещи!
Надо отобразить строку на экране сделай так:

If OpenConsole()
    Print("Hello world!")
    Input()
EndIf

И посмотри справку в разделе PureBasic - Console

0

786

Ничего я не по путал. Мне нужно, что бы "эхо" было в программе.

0

787

Может кто сталкивался......Помогите пожалуйста с кодом....выводящий текущее всемирное время GMT  в определенное место окна программы....Здесь ....http://purebasic.ru/source_code.php?id=1615   есть, но показывает разницу.....

0

788

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

Мне нужно, что бы "эхо" было в программе.

А в чем разница?
Аааааа, в программе надо. Ну вот

Код:
echo.s

echo="Hello world!" ; "echo=" и после равно какой-нибудь текст

If OpenConsole()
  Print(echo)
  Input()
 EndIf

Или может так?

Код:
echo.s

echo="Hello world!"

If OpenConsole()
  Print ("echo=" + echo); "echo=" и после равно какой-нибудь текст
  Input()
 EndIf

Или какие то другие извращения?

0

789

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

выводящий текущее всемирное время GMT

Синхронизацию через Интернет надо?

0

790

Было бы совсем круто.......хотя на всех компах есть тырнет....

0

791

Короче вы ничего не поняли.

0

792

Помогите пожалуйста с загрузкой изо на imagebam.com
описание кода
Через процедуру читается файл(картинка), получается base64 кодированная строка
Из файла читается запрос, в котором заменяется размер файла и вставляется сам файл
Далее всё это отправляется и ответ

Код програмки
Код:
InitNetwork() 

 ;кодирование файла в base64 
 Procedure.s Base64_Encoder(path_to_file.s) 
   file_size = FileSize(path_to_file.s) 
   base64_size = file_size/100*135 
   If file_size>0 
     file = ReadFile(#PB_Any, path_to_file.s) 
     If file 
       *mem_file = VirtualAlloc_(#Null, file_size, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE) 
       If *mem_file 
         If ReadData(file, *mem_file, file_size) = file_size 
           *mem_base64 = VirtualAlloc_(#Null, base64_size, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE) 
           If *mem_base64 
             encoder_len = Base64Encoder(*mem_file, file_size, *mem_base64, base64_size) 
             If encoder_len < base64_size And encoder_len > file_size 
               result.s = PeekS(*mem_base64) 
               CloseFile(file) 
               VirtualFree_(*mem_file, 0, #MEM_RELEASE) 
               VirtualFree_(*mem_base64, 0, #MEM_RELEASE) 
               
             Else 
               CloseFile(file) 
               VirtualFree_(*mem_file, 0, #MEM_RELEASE) 
               VirtualFree_(*mem_base64, 0, #MEM_RELEASE) 
               result.s = "" 
             EndIf 
           Else 
             CloseFile(file) 
             VirtualFree_(*mem_file, 0, #MEM_RELEASE) 
             VirtualFree_(*mem_base64, 0, #MEM_RELEASE) 
             result.s = "" 
           EndIf 
         Else 
           VirtualFree_(*mem_file, 0, #MEM_RELEASE) 
           CloseFile(file) 
           result.s = "" 
         EndIf 
       Else 
         VirtualFree_(*mem_file, 0, #MEM_RELEASE) 
         CloseFile(file) 
         result.s = "" 
       EndIf 
     Else 
       CloseFile(file) 
       result.s = "" 
     EndIf 
   Else 
     result.s = "" 
   EndIf 
   ProcedureReturn result.s 
 EndProcedure 

 ;процедура чтания строковых файлов 
 Procedure.s read_file(file_name.s, num) 
   size = FileSize(file_name.s) 
   If size>0 
     Repeat 
       file = OpenFile(#PB_Any, file_name.s) 
       If file 
         str.s = Space(size) 
         size2 = ReadData(file, @str.s, size) 
         If size2 = size 
           result.s = str.s 
         Else 
           result.s = "ERROR" 
         EndIf 
         CloseFile(file) 
         control = num+1 
       Else 
         control = control+1 
       EndIf 
     Until num<=control 
   Else 
     result.s = "ERROR" 
   EndIf 
   ProcedureReturn result.s 
 EndProcedure 

 ;процедура для загрузки изо на imagebam.com 
 Procedure imagebam_com(mem_path) 
   path.s = PeekS(mem_path) 
   mem_img.s = Base64_Encoder(path.s) 
   img_size = Len(mem_img.s)+3573 
   
   ;читаем файл с запросом 
   file_text.s = read_file("requests\imagedam.rqs", 100) 
   file_text.s = ReplaceString(file_text.s, "{{{img file}}}", mem_img.s) 
   file_text.s = ReplaceString(file_text.s, "Content-Length: 0", "Content-Length: "+Str(img_size)) 
   
   mem_size = Len(file_text.s) 
   
   *mem_header = VirtualAlloc_(#Null, mem_size, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE) 
   PokeS(*mem_header, file_text.s, mem_size) 
 ;   file = OpenFile(#PB_Any, "1.Data") 
 ;   WriteData(file, *mem_header, mem_size) 
 ;   CloseFile(file) 
   
   connection_id = OpenNetworkConnection("www.imagebam.com", 80) 
   If connection_id 
   Else 
     ProcedureReturn 0 
   EndIf 
   
   send_size = SendNetworkData(connection_id, *mem_header, mem_size) 
   If send_size=mem_size 
     VirtualFree_(*mem_header, 0, #MEM_RELEASE) 
     Repeat 
       *getdata = VirtualAlloc_(#Null, 1024, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE);выделяем память под пакет 
       html_pack_size = ReceiveNetworkData(connection_id, *getdata, 1024);получаем пакет 
       html.s = html.s + PeekS(*getdata);складываем всё в один код 
       Debug PeekS(*getdata) 
       VirtualFree_(*getdata, 0, #MEM_RELEASE);осовбождаем память от пакета 
       If html_pack_size=0;если полученый пакет = 0, то конец загрузки 
         Break;завершаем цикл 
       EndIf 
     ForEver 
   Else 
     VirtualFree_(*mem_header, 0, #MEM_RELEASE) 
     ProcedureReturn 0 
   EndIf 
 ;   SetClipboardText(html.s) 
 EndProcedure 
 a.s = "E:\photo\иконки\Andere\AllDay.ru_9.png"; адрес изо на винте 
 Debug imagebam_com(@a.s)
заголовок запроса
Код:
POST /sys/upload/save HTTP/1.1 
 User-Agent: Opera/9.80 (Windows NT 6.1; U; MRA 6.0 (build 5976); ru) Presto/2.10.289 Version/12.02 
 Host: www.imagebam.com 
 Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 
 Accept-Language: ru,kk-KZ;q=0.9,kk;q=0.8,en;q=0.7 
 Accept-Encoding: base64 
 Referer: http://www.imagebam.com/basic-upload 
 Connection: Keep-Alive 
 Content-Length: 0 
 Content-Type: multipart/form-data; boundary=----------JkD5pNl7I9rabGqPQMt3xl 

 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="img_file.jpg" 
 Content-Transfer-Encoding: base64 

 {{{img file}}} 
 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="file[]"; filename="" 


 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="content_type" 

 0 
 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="thumb_size" 

 100 
 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="thumb_aspect_ratio" 

 resize 
 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="thumb_file_type" 

 jpg 
 ------------JkD5pNl7I9rabGqPQMt3xl 
 Content-Disposition: form-data; name="gallery_options" 

 1 
 ------------JkD5pNl7I9rabGqPQMt3xl--

При выполнение возвращается страница с результатами, но в полях для результата пусто

в запросе изменил только кодировку с gzip на base64

Accept-Encoding: base64
Content-Transfer-Encoding: base64 вместо Content-Type: image/jpeg

0

793

Доброго времени суток. Пните в сторону как узнать в чем ошибка OpenNetworkConnection
Дело в том, что везде работает нормально, а на одном компе висит пру минут и не подключается. На других компах даже не подключаясь быстренько ноль возвращает и все хорошо. Антивирус отключал, файерволов нет.
Мне бы просто направление, что глянуть про отладку соединений по сети
Вот строка подключения
lConn = OpenNetworkConnection("127.0.0.1", 6384)

Спасибо

0

794

Использование асинхронных сокетов решит проблему зависания функции до установки связи.

0

795

Доброго времени суток, дамы и господа! Объясните темному, почему появляются погрешности в конце значения переменной. Например, присваиваю целое значение переменной, скажем, a.f=12. Ниже по программе, скажем, вывожу эту переменную на экран, а она уже a.f=12.0000001235.
И еще вопрос. Команда Round округляет дробное до целого. А есть ли команда, округляющая до нужного знака после запятой?
Заранее спасибо!

0

796

Рома из Харькова написал(а):

А есть ли команда, округляющая до нужного знака после запятой?

Если для дальнейших расчётов, то неимеет смысла, а если показать пользователю результат, то

Код:
  value.f = 10.5464907
  Debug "Result: " + StrF(value)    ; we do not use the 2nd parameter, so we get a float number rounded to 10 decimal places
  Debug "Result: " + StrF(value,3)  ; we want a result with two decimal places, no rounding needed as we have only two
  Debug "Result: " + StrF(value,0)  ; we want a result with no decimal places, so the value is rounded

0

797

Всем привет!
Возможно ли сделать так, чтобы прога сохраняла свои настройки в себе(не хочется тянуть за собой *.ini)?

Петр, не раскажите, как правильно пользоваться Procedure UnPak(*pak)?

0

798

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

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

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

0

799

Рома из Харькова написал(а):

почему появляются погрешности в конце значения переменной. Например, присваиваю целое значение переменной, скажем, a.f=12. Ниже по программе, скажем, вывожу эту переменную на экран, а она уже a.f=12.0000001235.

Потому что переменная имеет ограниченный размер (Float - 4 байта) и в ней число округляется до ближайшего значения чтобы уместилась целая и дробная часть.

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

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

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

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

Петр, не раскажите, как правильно пользоваться Procedure UnPak(*pak)?

Что за процедура?

0

800

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

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

Понял, буду тянуть за собой *.ini.

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

Что за процедура?

Код:
; Процедура UnPak() распаковывает данные, упакованные функцией PackMemory()
; Процедуре нужно передать указатель на первый байт упакованных данных, например из DataSection
; При успешной распаковке, процедура вернет указатель на место нахождения распакованных данных
; Не забывайте освобождать память функцией FreeMemory когда распакованные данные больше не нужны

Procedure UnPak(*pak)
  *Unpak_mem = 0
  RealSize = PeekL(*pak+2)
  If RealSize>0 And RealSize<10000000
    *mem = AllocateMemory(RealSize+10)
    If *mem
      If UnpackMemory(*pak, *mem) = RealSize
        *Unpak_mem = *mem
      Else
        FreeMemory(*mem)
      EndIf
    EndIf
  EndIf
  ProcedureReturn *Unpak_mem
EndProcedure

*mem = UnPak(?TextPak)
If *mem
  Text.s = PeekS(*mem)
  FreeMemory(*mem)
endif

Я так понял, в Text.s помещается содержимое файла *.pak? И возможно ли работать с тремя файлами?

0

801

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

Я так понял, в Text.s помещается содержимое файла *.pak?

Да, при условии что этот архив был упакован функцией PackMemory().

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

И возможно ли работать с тремя файлами?

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

0

802

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

0

803

lakomet, Пётр, спасибо! Теперь понятно.

0

804

Привет.
Столкнулся с проблемой: Debug GetGadgetText(1) возвращает пустую строку, хотя Debug SetGadgetState(1, 2) возвращает 2.
http://s018.radikal.ru/i523/1211/f4/fac93096d3c8t.jpg
Что может быть?

0

805

GetGadgetText(1) вызывается перед SetGadgetState(1, 2).

0

806

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

0

807

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

0

808

Подскажите пример чата на Пурике пожалуйста.

0

809

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

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

Понять - понял, а как сделать не соображу. Попробовал так:

Код:
OpenWindow(0, 0, 0, 270, 140, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ComboBoxGadget(1, 10, 40, 250, 21)
      For a = 1 To 5
        AddGadgetItem(1, -1,"ComboBox item " + Str(a))
        SetGadgetState(1, a)   
      Next

      SetGadgetState(1, 0)    ; set (beginning with 0) the third item as active one
      Debug GetGadgetText(1)
      Debug GetGadgetState(1)

    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

но в строке всегда возвращается ComboBox item 1. Можете показать пример?

0

810

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

но в строке всегда возвращается ComboBox item 1.

Строка выше ведь делает его активным.

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

SetGadgetState(1, 0)    ; set (beginning with 0) the third item as active one

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

Подскажите пример чата на Пурике пожалуйста.

http://purebasic.info/phpBB2/viewtopic.php?p=8592#8592
http://purebasic.info/phpBB2/viewtopic.php?t=922

0


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