Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

CPU und Speicherauslastung als FUNCTION?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 16.04.2005, 14:43    Titel: CPU und Speicherauslastung als FUNCTION? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 16.04.2005, 14:46    Titel: Antworten mit Zitat

Hallo,

an die CPU Auslastung wirst du mit QB nicht rankommen. Dazu müsstest du dir ein Zusatzprogramm in VB/FB schreiben und auf die WinAPI zugreifen. Für die Speicherbelegung könnte FRE interessant für dich sein.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 16.04.2005, 14:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 16.04.2005, 14:56    Titel: Antworten mit Zitat

Hallo.

Siehe QB Hilfe. lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 16.04.2005, 14:57    Titel: Antworten mit Zitat

jaso...

*QB starte*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 16.04.2005, 15:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 16.04.2005, 19:05    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 16.04.2005, 20:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 16.04.2005, 22:03    Titel: Antworten mit Zitat

@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 missbilligen

@Jojo: Ich habe MEM natürlich per SHELL Befehl aufgerufen, was bedeutet dass QB ja noch im Speicher war...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 17.04.2005, 11:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 17.04.2005, 12:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Charly2



Anmeldungsdatum: 28.11.2004
Beiträge: 29
Wohnort: Mittelfranken

BeitragVerfasst am: 17.04.2005, 13:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 17.04.2005, 13:42    Titel: Antworten mit Zitat

danke für die ausführliche antwort, charly2...

genau das was ich wissen wollte
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz