Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 16.04.2005, 14:43 Titel: CPU und Speicherauslastung als FUNCTION? |
|
|
Ich habe wieder mal eine etwas komplizertere Frage: Ist es möglich, die CPU Aulastung und der freie Speicher des Unteren Speicherbereichts (also nix EMS/XMS) in QB per Funktion auszulesen?
So das ich dann z.B. ne Variable CPU_Auslastung% (mit inhalt z.B. 40 = zu 40% Ausgelastet) und MEM_FreierSpeicher& (mit Inhalt 412 = 412KB Freier Speicher)
Ist das möglich und wenn ja, wie? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 16.04.2005, 14:53 Titel: |
|
|
Gut, lassen wir mal die CPU Auslastung (das Prog soll später sowieso u.a. unter DOS laufen..)
Aber was zur Hölle ist FRE? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 16.04.2005, 14:56 Titel: |
|
|
Hallo.
Siehe QB Hilfe.
Code: | FRE - eine Funktion zur Speicherverwaltung, die die Größe des zur
Verfügung stehenden Speichers angibt.
Syntax
FRE(Zeichenkettenausdruck)
FRE(Numerischer Ausdruck)
# Zeichenkettenausdruck kann jeden beliebigen Wert besitzen. Dieser
Zeichenkettenausdruck zeigt der Funktion an, daß Sie den freien Zeichen-
kettenspeicher zu einem einzigen Block komprimieren möchten. Danach
wird von der Funktion FRE die Anzahl der freien Bytes dieses Blocks
zurückgegeben.
# Numerischer Ausdruck enthält den Wert -1, -2 oder jeden anderen
numerischen Wert. Dieser Wert zeigt den Typ der Statusinformation der
zurückzugebenden Zeichenkette oder Stapelplatzes an
(siehe «Details»). |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 16.04.2005, 14:57 Titel: |
|
|
jaso...
*QB starte* |
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 16.04.2005, 15:07 Titel: |
|
|
Ok, da ich leider kaum eine ahung von Speicherverwaltung usw. habe, hab ich auch noch nix hingekriegt...
Weder FRE(-1) FRE(-2) FRE(666) oder FRE("Irgend ein String") haben nen Wert ausgegeben mit dem ich was anfangen kann...
Mein Windows Me sagt bei mem, es habe noch 290KB (also 290000 byte)im unteren Speicherbereich, aber der höchste wert den ich mit FRE bekomme ist so ca. 45000. Kann mir jemand erklären wieso und wie ich einen Wert bekomme, der mit dem von MEM mehr oder weniger übereinstimmt (ich möchte jedoch NICHT den speicher per Mem auslesen und dann mit QB nach dem "Freier Speicher" Wert suchen. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 16.04.2005, 19:05 Titel: |
|
|
Am besten einmal diesen kleinen Code ausprobieren:
Code: | FOR i%=-10 TO 10:PRINT i%; FRE(i%):NEXT i% |
Das Ganze am besten ausdrucken und anschliessend die Online-Hilfe zusammen mit dem Ausdruck studieren. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.04.2005, 20:47 Titel: |
|
|
Dass QB nur so wenig zurrückgibt, liegt unter anderem daran, dass QB.EXE ja selber fast 300 KB hat..die müssen ja auch mal innen speicher rein! _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 16.04.2005, 22:03 Titel: |
|
|
@dreael: Ich hab mal das gemacht was du gesagt hast...
Dabei hab ich bemerkt, das QB7.1 ne Fehlermeldung rausgibt, wenn man nicht -3 -2 und die anderen gülten Werte angibt.
Ich benutze aber sowieso QB4.5 wegen der deutschen Hilfe...
Aber was zum Teufel ist ein Nicht-Zeichenkettendatenfeld und ein ungenutzer Stapelplatz. Und vorallem: Was hat das mit dem untern Speicherbereich zu tun?
Ich werd daraus einfach nicht schlau
@Jojo: Ich habe MEM natürlich per SHELL Befehl aufgerufen, was bedeutet dass QB ja noch im Speicher war... |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 17.04.2005, 11:13 Titel: |
|
|
gandro hat Folgendes geschrieben: | Dabei hab ich bemerkt, das QB7.1 ne Fehlermeldung rausgibt, wenn man nicht -3 -2 und die anderen gülten Werte angibt. |
Das heisst, dass dort nur bestimmte Werte zulässig sind. Du kannst sonst meinen Code zu so etwas wie
Code: | FOR i%=-10 TO 10
f% = -1
ON ERROR GOTO Fehler
w& = FRE(i%)
ON ERROR GOTO 0
IF f% = -1 THEN
PRINT i%; w&
ELSE
PRINT i%; "Nicht verfügbar. Fehler="; f%
END IF
NEXT i%
END
Fehler:
f% = ERR
RESUME NEXT |
modifizieren. So bekommst Du ebenfalls eine Liste sämtlicher unterstützter Argumente. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 17.04.2005, 12:03 Titel: |
|
|
Gut. Die gültigen Arguemente sind -3 -2 und -1.
Aber laut QB Hilfe ist keiner dazu gut, den freien Speicherplatz des konventionellen Speicherbereichtes auszulesen.
-3 steht für den freien Speicher im oberen Speicherbereich (für mich nicht von nutzen)
-2 steht für den freien Stack Space (für mich anscheinden nicht für bedeutung)
-1 steht für den freien "far memory for dos" (was ist das in deutsch?)
Da -1 vielversprechend klingt, habe ich mal die Probe aufs Exempel gemacht:
1. "PRINT FRE(-1)" gibt 259152 aus
2. "MEM /F" unter QB sagt es seien 251'872 Bytes gesamt frei (da mir jemand sagte, MEM nähme es nicht immer so genau, nehme ich an, es ist derselbe Wert wie FRE(-1) )
3. Ich starte DOSKEY
4. "PRINT FRE(-1)" gibt 7536 aus
5. "MEM /F" unter QB sagt: 247'184 Bytes gesamt
Die anderen FRE Werte sind vor und nach DOSKEY gleich.
Mach ich was falsch oder ist FRE nicht für mein Problem geeigent? |
|
Nach oben |
|
 |
Charly2
Anmeldungsdatum: 28.11.2004 Beiträge: 29 Wohnort: Mittelfranken
|
Verfasst am: 17.04.2005, 13:12 Titel: |
|
|
Hallo gandro,
Die DOS-Speicherverwaltung ist doch nicht so ganz einfach.
Der "untere Speicher" ist der für DOS reservierte Speicher von 640 KB.
FRE(-1) gibt den gesamten freien Speicherbereich an. Dieser Bereich
kann mit DIM-Anweisungen genutzt werden.
FRE(-2) gibt den freien Stapelspeicher (Stack) an. In der Regel sind für den Stack bei QBasic 2 KB reserviert. Dieser Speicher dient zur Zwischenspeicherung von Parametern und der Rücksprungadresse bei CALL-Aufrufen.
MEM ist ein DOS-Befehl der den noch verfügbaren DOS-Speicher angibt.
Normalerweise zeigen FRE(-1) und MEM in etwa den selben Wert an.
Wenn man aber mit SHELL ein speicherresidentes Programm aufruft,
wie DOSKEY, dann wird der Speicher zerstückelt, ein großer Teil des
freien Speichers steht dann nicht mehr für QBasic zur Verfügung, daher
der niedrige Wert bei FRE(-1).
Mfg
Charly |
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 17.04.2005, 13:42 Titel: |
|
|
danke für die ausführliche antwort, charly2...
genau das was ich wissen wollte |
|
Nach oben |
|
 |
|