Italia
Include

Download.inc (http:)

 
- Page 1 -


Download.Inc

HTTP-Abruffunktionen per einfacheres Abfragen von Webserver-Ausgaben.

<!---->

Download/ In den Warenkorb
4,99 €
inkl. MwSt.
keine Versandgebühr

/*
|
|
|
|   INC: Download.Inc
|   empfohlene Einbindung: include download.inc
|                          **************************
|
|   Sostegno: https://xprofan.com/includes
|
|   Die Urheberrechte dieser Software liegen bei mir (iF, David Strutz).
|
|
|   Salve, iF.
|   20070713
|
|____________________________________________________________________________________*/
 {$cleq}
/*      Download.Inc XPSE Democode
XPSE (XProfan's free PreCompiler) ist disponibile unter
https://xprofan.com/xpse                                                 */
include download.inc
windowstyle ( 8 | 16 | 512 )
cls 0
color 10,0
print

if len(trim$(dw.ip())) {//is.inet.available.trick

    print " INC-Version:             ",dw.ver()
    print " Ihre IP:                 ",dw.ip()
    print " Http-Abruf:              ",dw.get("https://xprofan.com/hilfe/sheet/xpse/","_testout.html"),"bytes."
    print " Bild-Abruf:              ",dw.get("https://xprofan.com/images/lv.bmp","_lv.bmp"),"bytes."
    print " Downloadgeschwindigkeit:~",int(dw.checkspeed()),"bytes/sec"
    long hbox=createhtmlbox (hwnd,"file:///"+translate$(getdir$("@"),"\","/")+"/_testout.html",0,180,width(hwnd),(height(hwnd)-180))
    loadbmp "_lv.bmp",(width(hwnd)-210),10;0

else

    print " Es konnte keine Internetverbindung genutzt werden."
    waitkey
    end

endif

do {

    waitinput

    select key

        caseof 2 : break

    endselect

}

destroywindow(hbox)
end




647 kB4,99 €
inkl. MwSt.
keine Versandgebühr
item:DE-8
Bezeichnung:Download.Inc
Version:0.1.6
Kurzbeschreibung: Erweiterte HTTP-Abruffunktionen per einfacheres Abfragen von Webserver-Ausgaben.
Hochgeladen:16.02.2009
Download
3 kB
Hochgeladen:31.10.2020
Downloadcounter78
Download
 
23.11.2004  
 



 
- Page 1 -


@Jacob: Habe Deinen Wunsch berücksichtigt und neue Version hochgeladen.

Demo dabei - man kann nun dem Long dw.CallerProcAddr eine ProcAddr zuweisen.
 
13.07.2007  
 




Michael
Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
01.12.2007  
 



@Dietmar: Du solltest die alte Unit aus Deinem XManager herauswerfen und durch diese INC ersetzen. Die INC ist fehlerfreier, unanfälliger und schneller da sie anders arbeitet als die Unit.
 
02.12.2007  
 




marian
Ciao,
ich habe leider keine Vollversion von xProfan 11, möchte aber dennoch eine File aus dem Internet herunterladen. Dabei bin ich auf diese Include (Version 0.16) gestoßen, aber irgendwie weiß ich nicht weiter.
So sieht momentan mein Testprogramm per die Prozedur aus:
KompilierenMarkierenSeparieren
declare prog_version!, down_bytes&
 $I download.inc
cls
print $ProgDir
down_bytes&=dw.get(http://url/update.txt,$ProgDir/update/update.txt)
print down_bytes&
waitkey
>

Der Interpreter Version 8 gibt sofort eine Fehlermeldung aus, dass dw.CallerProcAddr keine Zahl sei. Kommentiert man diese Zeile aus, so folgen Fehlermeldungen, dass die Funktionen unbekannt seien.
Der Interpreter der Freeversion 11 stürzt ab. Entfernt man $I download.inc kommt es nicht zum absturz, aber eben zu den solito Fehlermeldungen "Funktion unbekannt" bzw. "Klammern nicht ausgewogen"

Was mache ich falsch??
 
28.05.2010  
 



Hallo Marian,

die Include erfordert den Präkompiler (XPSE [...]  ) - probiere mal bitte ob dann damit und mit XProfan 8 das mitgelieferte Beispiel herunterläd. In der Freeware-Version von XProfan 11 (Interpreter) gibt es auch eine ähnliche Funktion namens DownLoadFile.

Syntaxfehler ist auch:
KompilierenMarkierenSeparieren
down_bytes&=dw.get(http://url/update.txt,$ProgDir/update/update.txt
>
korrekt:
KompilierenMarkierenSeparieren
down_bytes&=dw.get("https://url/update.txt",$ProgDir+"/update/update.txt")
>

PS: Du kannst ein hilfreiches Updatemanagement-Feature der Threads auf XProfan.Com nutzen.

Wenn Du z.B. ein Programm postest/ vorstellst wie z.B. hier bei Gonzo: [...]  dann hast Du die Möglichkeit im Vorstellungs-/ Initialposting die Version zu hinterlassen. In der Themenübersicht wiederum von Threads (Beispiel Gonzo [...]  ) gibt es rechts unten einen Link zu einer permanenten URL, die als Antwort nur die Versionsnummer liefert wie z.B. [...]  . So bleibt es ein Arbeitsschritt eine neue Version zu veröffentlichen und gleichzeitig darüber ein Updatemanagement abzuwickeln - zudem hat man durch das Hochladen des Programmpaketes auch eine statische URL von der ein Client dann einfach herunterladen kann z.B. wenn eine neue Version vorliegt.
 
28.05.2010  
 




marian
Ich hab mir jetzt XPSE heruntergeladen und den Pfad zu xpse.exe als Interpreterpfad angegeben. wenn ich nun damit das Beispielprogramm ausführe öffnet sich ein DOS-Fenster mit den Meldungen, dass Runtime und Compiler gefunden wurden. Runtime und Compiler sind beide aus der Version 8. Wenn ich dann ein "C" eingebe, um zu compilieren, bleibt der Compiler in Zeile 6 stehen mit der Fehlermeldung: "Befehl unbekannt: VAR"
Ich hab auch schon versucht, in der *.enh-File alle var-Befehle durch declare zu ersetzten. Da kam dann die Fehlermeldung beim Compilieren: "Befehl unbekannt: SELECT"

Wer kann helfen?

Das Updatemanagement der Community, bringt mir nichts, da das Programm nicht in diesem Sinne veröffentlich werden soll.
 
28.05.2010  
 



Ah, verstehe - "fehlen" dem XProfan 8 noch ein paar andere Features.

Ich schaue (nach dem Abendessen) ob sich das nicht einfach per XProfan 8 übersetzen lässt.
 
28.05.2010  
 



Probiere mal: (ungetestet)
KompilierenMarkierenSeparieren
def $dw.version="0.1.6.x8.0"
var dw.CallerProcAddr&=0

proc dw.ver

    return $dw.version

endproc

proc dw.ip

    return dw.get("https://ip.mxii.com")

endproc

proc dw.get

    parameters url$,target$

    if %pCount=1

        return dw.DownloadFile(url$,"",dw.CallerProcAddr&)

    elseif %pCount=2

        return dw.DownloadFile(url,target,dw.CallerProcAddr&)

    endif

    return ""

endproc

proc dw.checkinternet

    var isnet&=0
    var dllh&=usedll("wininet.dll")
    casenot dllh& : return 0
    var hinet&=external("wininet.dll","InternetOpenA",0,0,0,0,0)

    if hinet&

        isnet&=1
        external("wininet.dll","InternetCloseHandle",hInet&)

    endif

    freedll dllh&
    return isnet&

endproc

proc dw.checkspeed

    casenot dw.checkinternet() : return 0
    var __int_dwspd&=&gettickcount
    dw.get("https://ip.mxii.com/speed.get")
    __int_dwspd&=1000/((&gettickcount-__int_dwspd&)/150000)
    return __int_dwspd&

endproc

######## INTERNAL FUNCTIONS ########

proc dw.DownloadFile

    parameters url$,destinationFileName$,downloadCallerProc&
    var oel&=set("ErrorLevel",-1)
    var ofm&=set("FileMode",2)
    var content$=""
    var tofile&=if(len(destinationFileName$),1,0)
    var dllh&=usedll("wininet.dll")

    ifnot dllh&

        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    var hInet& = external("wininet.dll","InternetOpenA",0,0,0,0,0)

    ifnot hInet&

        freedll dllh&
        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    var hFile&=external("wininet.dll","InternetOpenUrlA",hInet&,addr(url$),0,0,$80000000,0)

    ifnot hFile&

        external("wininet.dll","InternetCloseHandle",hInet&)
        freedll dllh&
        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    declare buf#
    dim buf#,1024

    if tofile&

        if fileexists(destinationFileName)

            var delfh&=assign(destinationFileName$)
            erase delfh&
            assign delfh&,""

        endif

        var fh&=assign(destinationFileName$)
        openrw fh&

    endif

    case downloadCallerProc& : call(downloadCallerProc&,-1)
    var bytesread&=0
    var accbytesread&=0

    while 1

        external("wininet.dll","InternetReadFile",hFile&,buf#,1024,addr(bytesread&))

        if bytesread&>0

            if tofile

                blockwrite fh&,buf#,0,bytesread&
                accbytesread&=accbytesread&+bytesread&

            else

                content$=content$+char$(buf#,0,bytesread&)

            endif

            case downloadCallerProc& : call(downloadCallerProc&,bytesread&)

        else

            break

        endif

    wend

    case downloadCallerProc& : call(downloadCallerProc&,-2)
    external("wininet.dll","InternetCloseHandle",hFile&)
    external("wininet.dll","InternetCloseHandle",hInet&)
    dispose buf#
    freedll dllh&
    set("FileMode",ofm&)
    set("ErrorLevel",oel&)

    if tofile&

        closerw fh&
        assign fh&,""
        return accbytesread&

    end
return content$ endproc
 
28.05.2010  
 



Spars Dir, die Vars müssen auch noch weg...
 
28.05.2010  
 



 
- Page 2 -


So - und auch Assign auf #99 umgestellt statt dynamisch - bitte testen:
KompilierenMarkierenSeparieren
def $dw.version="0.1.6.x8.0"
declare dw.CallerProcAddr&
dw.CallerProcAddr&=0

proc dw.ver

    return $dw.version

endproc

proc dw.ip

    return dw.get("https://ip.mxii.com")

endproc

proc dw.get

    parameters url$,target$

    if %pCount=1

        return dw.DownloadFile(url$,"",dw.CallerProcAddr&)

    elseif %pCount=2

        return dw.DownloadFile(url,target,dw.CallerProcAddr&)

    endif

    return ""

endproc

proc dw.checkinternet

    declare isnet&
    isnet&=0
    declare dllh&
    dllh&=usedll("wininet.dll")
    casenot dllh& : return 0
    declare hinet&
    hinet&=external("wininet.dll","InternetOpenA",0,0,0,0,0)

    if hinet&

        isnet&=1
        external("wininet.dll","InternetCloseHandle",hInet&)

    endif

    freedll dllh&
    return isnet&

endproc

proc dw.checkspeed

    casenot dw.checkinternet() : return 0
    declare __int_dwspd&
    __int_dwspd&=&gettickcount
    dw.get("https://ip.mxii.com/speed.get")
    __int_dwspd&=1000/((&gettickcount-__int_dwspd&)/150000)
    return __int_dwspd&

endproc

######## INTERNAL FUNCTIONS ########

proc dw.DownloadFile

    parameters url$,destinationFileName$,downloadCallerProc&
    declare oel&,ofm&,content$,tofile&,dllh&,hInet&,hFile&,delfh&,fh&,bytesread&,accbytesread&
    oel&=set("ErrorLevel",-1)
    ofm&=set("FileMode",2)
    content$=""
    tofile&=if(len(destinationFileName$),1,0)
    dllh&=usedll("wininet.dll")

    ifnot dllh&

        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    hInet& = external("wininet.dll","InternetOpenA",0,0,0,0,0)

    ifnot hInet&

        freedll dllh&
        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    hFile&=external("wininet.dll","InternetOpenUrlA",hInet&,addr(url$),0,0,$80000000,0)

    ifnot hFile&

        external("wininet.dll","InternetCloseHandle",hInet&)
        freedll dllh&
        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    declare buf#
    dim buf#,1024

    if tofile&

        if fileexists(destinationFileName$)

            assign #99,destinationFileName$
            erase #99

        endif

        assign #99,destinationFileName$
        openrw #99

    endif

    case downloadCallerProc& : call(downloadCallerProc&,-1)
    bytesread&=0
    accbytesread&=0

    while 1

        external("wininet.dll","InternetReadFile",hFile&,buf#,1024,addr(bytesread&))

        if bytesread&>0

            if tofile

                blockwrite #99,buf#,0,bytesread&
                accbytesread&=accbytesread&+bytesread&

            else

                content$=content$+char$(buf#,0,bytesread&)

            endif

            case downloadCallerProc& : call(downloadCallerProc&,bytesread&)

        else

            break

        endif

    wend

    case downloadCallerProc& : call(downloadCallerProc&,-2)
    external("wininet.dll","InternetCloseHandle",hFile&)
    external("wininet.dll","InternetCloseHandle",hInet&)
    dispose buf#
    freedll dllh&
    set("FileMode",ofm&)
    set("ErrorLevel",oel&)

    if tofile&

        closerw #99
        return accbytesread&

    

    return content$

endproc

 
28.05.2010  
 




Dietmar
Horn
Bei XProfan 8.0 gehen die Dateinummern noch nicht bis 99, sondern nur von 1 bis 15.
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
28.05.2010  
 



Roland!

Die Hilfedatei im XProfan 8-Paket ist eine HLP!

Ahhhhhhhhhhhhhhhhhh! *kreuzbandschüttel*

@Dietmar: Habe auf #15 umgestellt und aus if tofile if tofile& gemacht:
KompilierenMarkierenSeparieren
def $dw.version="0.1.6.x8.0"
declare dw.CallerProcAddr&
dw.CallerProcAddr&=0

proc dw.ver

    return $dw.version

endproc

proc dw.ip

    return dw.get("https://ip.mxii.com")

endproc

proc dw.get

    parameters url$,target$

    if %pCount=1

        return dw.DownloadFile(url$,"",dw.CallerProcAddr&)

    elseif %pCount=2

        return dw.DownloadFile(url,target,dw.CallerProcAddr&)

    endif

    return ""

endproc

proc dw.checkinternet

    declare isnet&
    isnet&=0
    declare dllh&
    dllh&=usedll("wininet.dll")
    casenot dllh& : return 0
    declare hinet&
    hinet&=external("wininet.dll","InternetOpenA",0,0,0,0,0)

    if hinet&

        isnet&=1
        external("wininet.dll","InternetCloseHandle",hInet&)

    endif

    freedll dllh&
    return isnet&

endproc

proc dw.checkspeed

    casenot dw.checkinternet() : return 0
    declare __int_dwspd&
    __int_dwspd&=&gettickcount
    dw.get("https://ip.mxii.com/speed.get")
    __int_dwspd&=1000/((&gettickcount-__int_dwspd&)/150000)
    return __int_dwspd&

endproc

######## INTERNAL FUNCTIONS ########

proc dw.DownloadFile

    parameters url$,destinationFileName$,downloadCallerProc&
    declare oel&,ofm&,content$,tofile&,dllh&,hInet&,hFile&,delfh&,fh&,bytesread&,accbytesread&
    oel&=set("ErrorLevel",-1)
    ofm&=set("FileMode",2)
    content$=""
    tofile&=if(len(destinationFileName$),1,0)
    dllh&=usedll("wininet.dll")

    ifnot dllh&

        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    hInet& = external("wininet.dll","InternetOpenA",0,0,0,0,0)

    ifnot hInet&

        freedll dllh&
        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    hFile&=external("wininet.dll","InternetOpenUrlA",hInet&,addr(url$),0,0,$80000000,0)

    ifnot hFile&

        external("wininet.dll","InternetCloseHandle",hInet&)
        freedll dllh&
        set("FileMode",ofm&)
        set("ErrorLevel",oel&)
        return ""

    endif

    declare buf#
    dim buf#,1024

    if tofile&

        if fileexists(destinationFileName)

            assign #15,destinationFileName$
            erase #15

        endif

        assign #15,destinationFileName$
        openrw #15

    endif

    case downloadCallerProc& : call(downloadCallerProc&,-1)
    bytesread&=0
    accbytesread&=0

    while 1

        external("wininet.dll","InternetReadFile",hFile&,buf#,1024,addr(bytesread&))

        if bytesread&>0

            if tofile&

                blockwrite #15,buf#,0,bytesread&
                accbytesread&=accbytesread&+bytesread&

            else

                content$=content$+char$(buf#,0,bytesread&)

            endif

            case downloadCallerProc& : call(downloadCallerProc&,bytesread&)

        else

            break

        endif

    wend

    case downloadCallerProc& : call(downloadCallerProc&,-2)
    external("wininet.dll","InternetCloseHandle",hFile&)
    external("wininet.dll","InternetCloseHandle",hInet&)
    dispose buf#
    freedll dllh&
    set("FileMode",ofm&)
    set("ErrorLevel",oel&)

    if tofile&

        closerw #15
        return accbytesread&

    

    return content$

endproc


KompilierenMarkierenSeparieren funktioniert so mit XProfan 8 (getestet).
 
29.05.2010  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

29.170 Views

Untitledvor 0 min.
Gast.0815 vor 13 Tagen
Erhard Wirth14.06.2024
Pascal ter Haseborg25.05.2023
Cyberangle03.02.2023
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie