Bank und Strings

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Der Eisvogel

Betreff: Bank und Strings

BeitragDo, Aug 07, 2008 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Gibts es eine Möglichkeit einen String in eine Bank zu schreiben?
Also sowas hier geht nicht:
Code: [AUSKLAPPEN]
PokeInt(bank,0,66)
PokeInt(bank,0,107)
PokeInt(bank,0,97)


Dann nacheinander auslesen und zu Buchstaben umwandeln.
Damit kann ich leider nix machen.
Es muss so gehen:
Code: [AUSKLAPPEN]
PokeInt(bank,0,"String")


Das geht leider nicht.
Hat jmd einen Ausweg parrat?

Edit: Besser gefragt: Kann man einen String in eine Zahl umwandeln und umgekehrt?

MfG
Der Eisvogel

ToeB

BeitragDo, Aug 07, 2008 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Den string in Zahlen : Asc
Die Zahl in String : Chr

Dazu musst du jeden Buchstaben vom String nehmen, ihn in den Ascii code umwandeln, in die Bank speichern, auslesen, und dann mit Chr wieder verknüpfen...


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Der Eisvogel

BeitragDo, Aug 07, 2008 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das kann ich nicht verwenden. LESEN

Ich habe etwas weiter geguckt und bin drauf gekommen den strin in Hex zu konvertieren.
Jetzt mach ich grad an einer Funktion Dafür rum.
Wenn jmd eine hat, bitte posten.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Xeres

Moderator

BeitragDo, Aug 07, 2008 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Sowas wie... Hex ?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Der Eisvogel

BeitragDo, Aug 07, 2008 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Funktion kenne ich schon, aber die Kann nur Zahlen nehmen und nicht das Wort "Hallo".

EDIT: Mir grad aufgefallen, das ich mit Hex nicht weiterkomme, denn da könnte ich nur 4 Buchstaben Wörter machen. Neue Idee.

Xeres

Moderator

BeitragDo, Aug 07, 2008 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich geht das nur mit Zahlen. Hex ist nur ne andere Art Zahlen darzustellen, wie Binär und Dezimal. Buchstaben bzw. Strings sind als Ascii codiert.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Eingeproggt

BeitragDo, Aug 07, 2008 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir geht iwie grad nicht ein, warum du ToeB's Lösung nicht verwenden kannst?
So macht das nämlich jedes Programm, das Strings in eine Bank schreibt. Und wenn du es als Funktion haben willst, dann pack es dir in eine Funktion Smile

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Der Eisvogel

BeitragDo, Aug 07, 2008 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich übergebe diese Bank an eine Funktion, und diese holt sich den Text nur von dieser einen Stelle. Also ich kann die einzelnen Buchstaben nicht umwandeln und dann immer eine Stelle in der Bank weitergehen, da immer nur von einer einzigen Stelle der Text genommen wird.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Vulture

BeitragDo, Aug 07, 2008 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Nabend,
BlitzBasic hat an sich bei der installion, schon ein paar Libs dabei, die du verwenden kannst, darunter auch die Funktion PeekString und PokeString. Man muss nur unter [Programme]\Blitz3D\libs suchen. Dort findet man auch ein paar andere nützliche dinge. Auserdem willst du deinen String als Integer Wert speichern was auch nie gehen wird !

File\peekstring.bb
Code: [AUSKLAPPEN]
Function peekstring$(buffer,position)
For n=0 To BankSize(buffer)-1
   byte=PeekByte(buffer,position)
   If byte<>0
      s$=s+Chr(byte)
      Else
      Return s
      EndIf
   position=position+1
   Next
RuntimeError "String terminator not found."
End Function


File\pokestring.bb
Code: [AUSKLAPPEN]
Function pokestring(buffer,position,s$)
For n=1 To Len(s)
   PokeByte buffer,position,Asc(Mid$(s$,n,1))
   position=position+1
   Next
PokeByte buffer,position,0
End Function

Der Eisvogel

BeitragDo, Aug 07, 2008 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Lies bitte mal den Beitrag über deinem.
Diese Funktion macht nix anderes als das was ich nicht verwenden kann.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Xeres

Moderator

BeitragDo, Aug 07, 2008 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht könnte man dir besser helfen, wenn du sagst, was du denn schlussendlich erreichen möchtest...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Der Eisvogel

BeitragFr, Aug 08, 2008 9:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte das erreichen, was der,der die ggTray.dll programmiert hat, nicht geschaft hat und zwar mit der Funktion Shell_NotifyIcon, nur mit dem unterschied, das ich ohne DLL klar kommen will. Ich brauche den Text in der Bank, damit über meinem Icon ein Tooltip erscheint, wenn ich mit der Maus drüberfahre.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

BladeRunner

Moderator

BeitragFr, Aug 08, 2008 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Du scheinst da ein grundsätzliches Verstehensproblem zu haben, Eisvogel. Ein String belegt nunmal mehrere Byte im Speicher und die Dir gegebene Funktion macht nichts weiter als ab einer definierten Position Zeichen für Zeichen in die Bank zu schreiben. Zum Abschluss wird das Ganze 0-terminiert (d.h. mit der 0 abgeschlossen damit erkannt wird dass der String zu Ende ist. So und nicht anders funktioniert das eben.
Es ist also falsch anzunehmen dass die Funktion die Zeichenkette nur von Position 0 nimmt, denn eine Zeichenkette besteht nunmal aus Anzahl der Zeichen + 1 Byte.
Wenn da also noch ein Fehler ist wird er wohl eher woanders liegen.
Btw. möchte ich Dich bitten ein wenig höflicher zu sein, denn hier wird versucht dir zu helfen. Und da kommt Rumgeschnauze wie "LESEN" gar nicht gut. Es sei denn Du möchtest nicht dass man dir hilft.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Der Eisvogel

BeitragFr, Aug 08, 2008 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du das so meinst:
Code: [AUSKLAPPEN]
PokeInt(TIcon,24,84)
PokeInt(TIcon,28,101)
PokeInt(TIcon,32,115)
PokeInt(TIcon,36,116)
PokeInt(TIcon,40,0)


Da nimmt die Funktion auch nur das T(84).

Edit: Wenn ich "meine", das etwas nicht geht und da kommt jmd und sagt doch ohne mir zu sagen wo mein Denkfehler ist, ist es schwer zu verstehen. Also Toeb: Sorry.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

BladeRunner

Moderator

BeitragFr, Aug 08, 2008 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Du solltest Pokebyte nehmen, dann geht es. Ein int besteht aus 4 Byte und die drei ausserhalb deines Buchstabens werden nur '0' sein und daher al nullterminierung erkannt.
Nochmal: die Funktion die dir Vulture postete macht genau das was du brauchst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Der Eisvogel

BeitragFr, Aug 08, 2008 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool
Danke BladeRunner für die Aufklärung, und Entschuldigung an alle für meine Unhöflichkeiten.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group