Datentyp eines Bankinhalts feststellen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Bob

Betreff: Datentyp eines Bankinhalts feststellen

BeitragFr, Jan 06, 2006 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

ich möchte für ein Projekt eine allgemein gültige Funktion schreiben
um den Inhalt an einer bestimmten Positon einer Bank zu löschen.

Function Bank_DeleteValue(bank,Position)

End Function

Durch gezieltes Kopieren des Inhalts mit anschliesendem Resize der Bank bekommt man ja einen Eintrag entfernt.
Gibt es nun aber eine Möglichkeit festzustellen welcher Datentyp in der Bank abgelegt wurde? (Byte, Int,Float oder Short)
Ansonsten müsste ich für jeden Datentyp eine seperate Funktion erstellen.
z.B.

Function Bank_DeleteShort(bank,Position)

bob

BtbN

BeitragFr, Jan 06, 2006 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
1 Short = 2 Byte
1 Int = 4 Byte
1 Byte = 1 Byte

Du kannst also BytefürByte durchgehen, das ist vollkommen egal, was reingeschreiben wurde, sind alles nur Bytes.

Bob

BeitragFr, Jan 06, 2006 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja wen das tatsächlich so sein sollte hab ich glaube ich das ganze Bankobjekt noch nicht kapiert.
Versuch mal an Position 3 einer Bank mit Byte Inhalten einen Integerwert auszulesen.
 

Dreamora

BeitragFr, Jan 06, 2006 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist kein Problem ...
Du kannst an jedem beliebigen Punkt eine Int auslesen, solange danach noch 4 Byte an Daten folgen, denn 4 beliebige auf einander folgende Bytes sind eine Int. Nicht umbedingt eine die du gespeichert hast, aber dennoch eine Int.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BtbN

BeitragFr, Jan 06, 2006 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast noch mehr nicht verstanden, als nur Banks ^^
Die nidrigste Speichermenge ist ein Bit, das kann nur 1 oder 0 sein, ein Byte hat 8 Bit:

00000001 = 1
00000010 = 2
00000100 = 4
.
.
.

00000011 = 3
00000101 = 5

Das geht bis 255.
Und wenn man nun weiter will, als 255, dann nimmt man halt 16 Bits = 2 Byte = 1 Short, und wenn man nun ein Short aus einer Bank ausliest, liest du 2 Bytes, die zusammen das Short darstellen, oder halt 4 Bytes, ein Integer.
Jetzt klar?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Jan 06, 2006 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Bank besteht nur aus Bytes und es gibt keinen direkten Befehl zum Auslesen,
ob es sich um Byte Short Int oder Float handelt, da es auch möglich ist alle Typen gleichzeitig zu benutzten!
Ähnlich einer Datei auf der Festplatte!

Für das was du vorhast sind Types wahrschneinlich besser geeignet und einfacher, da du einfach einen Eintrag löschen kannst ohne dir Gedanken über den Speicherplatz(Verschieben, Kopieren) zu machen!
[BB2D | BB3D | BB+]

Bob

BeitragFr, Jan 06, 2006 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
@Rallimen
Zitat:
...da es auch möglich ist alle Typen gleichzeitig zu benutzten

Hmmm. Das war mir wirklich neu weil ich noch nie darüber nachgedacht habe. Stimmt aber. Wird ja nirgends erwähnt das der Inhalt nicht gemischt werfden darf. Hatte halt bisher immer nur eine Art von Daten in die Banks abgelegt. Nun wird alles Klar.

@BORNtobeNAMELESS
Na das höre ich doch heute zum allerersten mal. Smile
Im übrigen hast du noch Float vergessen mit ebenfalls 4 Byte.

Da in dem Projekt die Bank eine Field in einem Type ist erweitere ich den Type halt einfach noch um ein weiteres Feld in dem ich festhalte was ich in der Bank ablege. (da ich nachwievor keine Inhalte mischen werde.)
Dann ist das Problem nun vom Tisch.

Danke
 

CodeMaster

BeitragFr, Jan 06, 2006 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du in deiner Bank auf kein fixes Datenschema angewiesen bist, spricht doch nix dagegen, dass du jeweils vor den gespeicherten Wert ein Identifikations-Byte legst, das angibt, dass z.B. ein Byte, Integer etc. folgt.
Z.B. [IDByte, 32, IDInt, 41, 31, 62, 3, IDFloat, 99, 23, 51, 152, ...]
So mache ich das immer.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

Dreamora

BeitragFr, Jan 06, 2006 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch etwas schon: Wenn du Byte selbst auch verwenden willst ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group