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:

Größe eines Puffers ermitteln

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



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 19.02.2008, 21:58    Titel: Größe eines Puffers ermitteln Antworten mit Zitat

Schon wieder eine Anfängerfrage - sorry, aber weder in der Hilfe noch im Forum hab ich die passende Antwort gefunden.

Also Speicherplatz zu allokieren ist ja kein Thema, aber wenn man einen Speicherplatz unbekannter Größe hat - wie bekommt man denn die Größe eines Puffers heraus? Gibts sowas wie MemorySize() ?
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 19.02.2008, 22:04    Titel: Antworten mit Zitat

Ein Buffer ist ein Array oder(nein, war nicht böse gemeint, weiß es selbtst nicht so genau)?
Wen das so ist, dann kannst du mit UBOUND das letzte Element und somit die Größe feststellen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


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

BeitragVerfasst am: 19.02.2008, 22:11    Titel: Antworten mit Zitat

ein puffer ist fortlaufender speicher...

ich erstelle puffer normalerweise als strings mit fester länge, kommt aber ganz aufs anwendungsgebiet an - was willst du denn machen?
_________________
» 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
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 19.02.2008, 22:14    Titel: Antworten mit Zitat

Naja wenns ein String ist gehts ja ganz einfach.
Code:
groesse = len(puffer)


Warum bin ich heute so hilfsbereit?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 19.02.2008, 22:17    Titel: Antworten mit Zitat

Ok, dann frag ich mal anders - war vielleicht blöd ausgedrückt.

Wenn ich z.B. ein Bild lade (fbpng), dann kann ich natürlich berechnen wie groß der belegte Speicher - Puffer - ist. Allerdings ist dieser Puffer ja auch fest reserviert, ergo muß sich doch die Größe auch einfach ermitteln lassen.

Anderes Beispiel: Wenn ich per Allocate eine bestimmte Größe Speicher reserviere, muß das System ja auch wissen das es eben diesen Speicher nicht überschreiben darf. Dies kann es nur wenn es auch die größe kennt - fortlaufend hin oder her. Daher gibt es in den meisten Programmiersprachen sowas wie MemorySize() oder BankSize oder sonstwas um die Größe von Puffern oder auch Speicherbereichen zu ermitteln.

Ich wüsste halt gerne ob es sowas auch in FB gibt. Benötigen würde ich es insbesondere für den letzteren Sachverhalt um das Vorhandensein eines Speicherbereichs, genauer dessen Größe, überprüfen zu können wenn dieser als Pointer an mein Programm (später DLL) übergeben wird.

Zu kompliziert der Satz???
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
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: 19.02.2008, 22:27    Titel: Antworten mit Zitat

ich weiß nicht, aber könnte SizeOf() hier ein ansatz sein? Hab die funktion nicht bei alloziertem speicehr probiert, aber ein versuch ist es wert...
_________________
» 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
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 19.02.2008, 22:35    Titel: Antworten mit Zitat

Das gibt leider nur 4 zurück, ich vermute mal die Größe der Variable in Bytes zwinkern
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 19.02.2008, 23:03    Titel: Antworten mit Zitat

Hi,
leider gibt es keine Möglichkeit (mir ist jedenfalls keine bekannt) um die Größe des reservierten Speichers auszulesen.
FB benutzt bei 'Allocate' die C-Funktion 'malloc' und für deren Speicherverwaltung gilt:
Zitat:
Internes
Die Speicherverwaltung merkt sich die Größe eines jeden Speicherblocks, der von Ihnen angefordert wurde – daher ist es auch nicht nötig, die Größe des Blocks (als echte Bytegröße) anzugeben, um den Speicher mit free() wieder freizugeben. Leider gibt es daher allerdings auch keinen portablen Weg, zu erfahren, wie groß dieser Speicherblock denn tatsächlich ist.
http://www.hs-augsburg.de/~sandman/c_von_a_bis_z/c_016_004.htm#RxxobKap016004040029481F04718C
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 19.02.2008, 23:10    Titel: Antworten mit Zitat

Mmmhhh...scheint mir aber noch ne Lücke in FB zu sein, naja, kann man nix machen.

Vielen Dank aber für die Hilfe
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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