Includes | | | | - Seite 1 - |
| | Download.Inc
HTTP-Abruffunktionen für einfacheres Abfragen von Webserver-Ausgaben.
<!---->
Download/ In den Warenkorb4,99 € inkl. MwSt. keine Versandgebühr
/*
|
|
|
| INC: Download.Inc
| empfohlene Einbindung: include download.inc
| **************************
|
| Support: 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 erhältlich 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 kB | 4,99 € inkl. MwSt. keine Versandgebühr | | Artikel: | DE-8 | | Bezeichnung: | Download.Inc | | Version: | 0.1.6 | | Kurzbeschreibung: | Erweiterte HTTP-Abruffunktionen für einfacheres Abfragen von Webserver-Ausgaben. | | Hochgeladen: | 16.02.2009 | | | | Herunterladen | | | | 3 kB | | Hochgeladen: | 31.10.2020 | | Ladeanzahl: | | | | Herunterladen |
| | | | |
| | | | | - Seite 1 - |
| | @Jacob: Habe Deinen Wunsch berücksichtigt und neue Version hochgeladen.
Demo dabei - man kann nun dem Long dw.CallerProcAddr eine ProcAddr zuweisen. |
| | | | |
| | 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. |
| | | | |
| | marian | Hallo, ich habe leider keine Vollversion von xProfan 11, möchte aber dennoch eine Datei 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 für die Prozedur aus: KompilierenMarkierenSeparieren 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 üblichen Fehlermeldungen "Funktion unbekannt" bzw. "Klammern nicht ausgewogen"
Was mache ich falsch?? |
| | | | |
| | | 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: KompilierenMarkierenSeparierendown_bytes&=dw.get(http://url/update.txt,$ProgDir/update/update.txt
korrekt: KompilierenMarkierenSeparierendown_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. |
| | | | |
| | 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-Datei 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. |
| | | | |
| | | Ah, verstehe - "fehlen" dem XProfan 8 noch ein paar andere Features.
Ich schaue (nach dem Abendessen) ob sich das nicht einfach für XProfan 8 übersetzen lässt. |
| | | | |
| | | Probiere mal: (ungetestet) KompilierenMarkierenSeparierendef $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&
endif
return content$
endproc
|
| | | | |
| | | Spars Dir, die Vars müssen auch noch weg... |
| | | | |
| | | | - Seite 2 - |
| | | So - und auch Assign auf #99 umgestellt statt dynamisch - bitte testen: KompilierenMarkierenSeparierendef $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&
endif
return content$
endproc
|
| | | | |
| | 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: KompilierenMarkierenSeparierendef $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&
endif
return content$
endproc
KompilierenMarkierenSeparieren funktioniert so mit XProfan 8 (getestet). |
| | | | |
|
AntwortenThemenoptionen | 29.075 Betrachtungen |
ThemeninformationenDieses Thema hat 4 Teilnehmer: |