| |
|
|
Gary12345 | Servus, KompilierenMarkierenSeparierenWindow %MaxX*0.1,%Maxy*0.1-%MaxX*0.3,%MaxX*0.3
WindowTitle "Updatechecker"
WindowStyle 31
declare Ende&,Diskgröße!
Proc DiskGröße
Parameters Laufwerkbuchstabe$'String
set("decimals",2)
Diskgröße!=DiskSize(Laufwerkbuchstabe$)/(1024*1024*1024) + " GB"
ROUND(Diskgröße!,3)
If Diskgröße!=0
print %Error
MESSAGEBOX("Laufwerk nicht vorhanden oder nicht lesbar!","Error X0001",0)
Else
Return Diskgröße!
EndIf
EndProc
'#################################
'APPENDMENU
PopUp "&Programm"
AppendMenu 101, "Updatestatus ermitteln"
AppendMenu 102, "Festplattenstatus ermitteln"
AppendMenu 103, "AutoStartLister"
AppendMenu 104, "Aktuelle Updates"
PopUp "&Sonstiges"
SubPopUp "Sonstiges"
AppendMenu 105, "Über den Autor"
AppendMenu 106, "Über das Programm"
AppendMenu 107, "Spende"
EndSub
AppendMenu 108, "Beenden"
'################################
print %Error
DiskGröße("C:")
print %Error
Whilenot Ende&=1
EndWhile
Was geht da schief? Blöde Frage, aber ich weiß nicht weiter. Könnte evtl. ein Sammelthread werden, da dies ein größeres Projekt ist.
Danke! |
|
|
| |
|
|
|
Julian Schmidt | Dir scheint der logische Operator "!=" nicht ganz klar zu sein. Ich würde außerdem besser prüfen ob kleiner gleich 0. Dein Zweiter-Fehler sind Umlaute in Variablen. |
|
|
| |
|
|
|
| @Julian:
Den Operator != als Ersatz für "not" gibt es in XProfan nicht.
@Garry: Diskgröße! ist vom Typ Float, also eine Fließkommazahl - ergo ist Diskgröße!=DiskSize(Laufwerkbuchstabe$)/(1024*1024*1024) + " GB" falsch da Du hier eine Stringzusammenführung anweist (+" GB").
Zudem, ROUND(Diskgröße!,3) rundet aber das gerundete Ergebnis legst Du nirgends ab wie z.B. diskgröße!=round(diskgröße!,3).
Grundsätzlich: Es ist aus verschiedenen Gründen nicht empfehlenswert Umlaute äöüß in Bezeichnern zu verwenden, auch wenn XProfan damit klarkommen mag. |
|
|
| |
|
|
|
Julian Schmidt | iF (18.02.13)
Den Operator != als Ersatz für "not" gibt es in XProfan nicht.
Jo, kleiner Lese-Fehler beim Überfliegen. Las Diskgröße!!=0 anstatt Diskgröße!=0. Nicht desdotrotz existiert != in Xprofan nicht, sondern nur <>. |
|
|
| |
|
|
|
Gary12345 | Das sind Tage wo ich mir immer wieder denke: "Wie dumm bin ich eig?" Und diese Fehler kennt man eig. Man findet sie nur nicht. Entweder ist das Köpfchen nicht da oder man hat es nicht kapiert. Ich plädiere auf Fall1. |
|
|
| |
|
|
|
Gary12345 | Nun eine andere Frage: Gibt es einen XPROFAN Befehl/Funktion, der den gesamten Arbeitsspeicher auslesen kann und den belegten RAM dazu. Wenn nicht, wie würde die dazugehörige API lauten. Wenn ich nach Arbeitsspeicher API und msdn library Suche, finde ich keine korrekte API. |
|
|
| |
|
|
|
RGH | Hallo, es ist guter Programmierstil vor und nach Operatoren und Gleicheitszeichen ein Leefeld zu lassen. Das erhöht die Lesbarkeit des Codes enorm! Zum zweiten: Ab XProfan X2 liefert Disksize das Ergebnis auch als Quadint zurück und kann einem Quadinit zugewiesen werden. Bei großen Festplatten führt die Zuweisung zu Floats zu Ungenauigkeiten.
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 18.02.2013 ▲ |
|
|
|
|
Gary12345 | Danke RGH Irgendeine eine Idee zur API? |
|
|
| |
|
|
|
Julian Schmidt | Bevor du hier Fragen stellst bitte erstmal das Forum durchsuchen. Sinnvolle Sucherbegriffe wäre etwa Ram, Mem, Mermory, Speicher etc. |
|
|
| |
|
|
|
Julian Schmidt | Find z.B. das hier. Scheint allerdings nicht immer zu funzen. KompilierenMarkierenSeparieren
Proc ShowMemoryStatus
Parameters Wert%' 1=Gesamter Ram, 2=Ram Frei, 3= Ram belegt, 4=Ram-Verbrauch in %
declare ramfrei&,gesamterram&,prozent&,ramverwendet&,MemStat#
Def GlobalMemoryStatus(1) !"KERNEL32","GlobalMemoryStatus"
Def Mbyte(1) Round(&(1)/$0100000,0)
Dim MemStat#,32
Long MemStat#,0=32
GlobalMemoryStatus(MemStat#)
prozent&=Long(MemStat#,4)
gesamterram&=MByte(Long(MemStat#,8))
if gesamterram&<0
ramfrei&=MByte(Long(MemStat#,12))
ramfrei&=ramfrei&*100
gesamterram&=ramfrei&/prozent&
Endif
ramfrei&=MByte(Long(MemStat#,12))
ramverwendet&=gesamterram&-ramfrei&
Dispose MemStat#
case Wert%=1 : return gesamterram&
case Wert%=2 : return ramfrei&
case Wert%=3 : return ramverwendet&
case Wert%=4 : return prozent&
EndProc
Cls
Decimals 0
while 1
print Str$(ShowMemoryStatus(4)) + "% Physikalischer Speicher verwendet"
print Str$(ShowMemoryStatus(1)) + "MB Physikalischer Speicher"
print Str$(ShowMemoryStatus(2)) + "MB Physikalischer Speicher frei"
print Str$(ShowMemoryStatus(3)) + "MB Physikalischer Speicher belegt"
sleep 300
cls
Endwhile
|
|
|
| |
|
|
|
Gary12345 | :/ Hab da andere Lösungen gefunden: KompilierenMarkierenSeparieren
Proc ShowMemoryStatus
Def GlobalMemoryStatus(1) !"KERNEL32","GlobalMemoryStatus"
Def Mbyte(1) Round(Div(&(1),$0100000),0)
Dim MemStat#,32
Long MemStat#,0=32
GlobalMemoryStatus(MemStat#)
Print Str$(Long(MemStat#,4))+"% Speicherauslastung"
Print MByte(Long(MemStat#,8))+"MB gesamter physik. Speicher"
Print MByte(Long(MemStat#,12))+"MB physik. Speicher frei"
Print MByte(Long(MemStat#,16))+"MB max. Größe der Swapdatei"
Print MByte(Long(MemStat#,20 ))+"MB max. in Swapdatei belegbar"
Print MByte(Long(MemStat#,24))+"MB max. virtueller Speicher für Prozess"
Print MByte(Long(MemStat#,28))+"MB max. virtueller Speicher für Prozess aktuell verfügbar"
Dispose MemStat#
EndProc
Fehler: Funktion unbekannt: Div???? Dein Code scheint auch nicht zu funken :/ |
|
|
| |
|
|
|
Julian Schmidt | Such mal Div in der Xprofan-Hilfe. Kommst schon noch drauf
Ist oben auch anders ^^ |
|
|
| |
|
|