eigene Datentypen/Datenfelder ?

Anfängerfragen zum Programmieren mit PureBasic.
spider84
Beiträge: 76
Registriert: 05.03.2008 03:06

eigene Datentypen/Datenfelder ?

Beitrag von spider84 »

Kann mir jemand am Beispiel des Morse-Codes erklären, wie ich derartige Tabellen geschickt verarbeiten kann?
Mein Traum wäre, dass ich einen Datentyp entwerfen könnte, der die Zustände k (=kurz) und l (=lang) kennt und ich in der Form

meinmorsearray[s] = l, l, l
meinmorsearray[o] = k, k, k

darauf zugreifen kann. Problem ist, dass nicht alle Buchstaben so kodiert sind. Manche haben auch nur ein kurz (glaube das e zum Beispiel).
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

naja der komplette Morse Code besteht ja nicht nu aus kurzen und langen Signalen wie sein l und k sondern auch aus Pausen, die anhand ihrer länge ein Symbol (k,l), Zeichen, Wort Trennen
Weitere Infos

du kannst also mit FindString einen String (Morse Code) in ein Wort umwandeln und auch wieder zurück.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

sortier die alle nach bitwerten

du brauchst noch nen dritten wert, weil morsezeichen eben führende nuller mitschreiben.
also, im grunde 4bit pro stelle.

00,00,10 für e
10,10,10 für s
weisst wiesch mein....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
spider84
Beiträge: 76
Registriert: 05.03.2008 03:06

Beitrag von spider84 »

danke schonmal für die schnelle antwort.
@stargate: im normalen alphabet sind ja auch keine leerzeichen drin, trotzdem gibt es sie. die würde ich natürlich in form einer verstellbaren pause einsetzen.

@kaeru gaman: die variante geht, allerdings hat sie 2 nachteile: 1. ich muss überprüfen ob da eine 0 steht und die dann ohne zeit zu verlieren überspringen, 2. ich wollte eigentlich bei der sache etwas über eigene datentypen in PB lernen. ich hätte auch fragen können wie ich ein 4-farb-bild darstelle mit einem datentyp color, der die werte "rot" "grün" "blau" und "weiss" kennt. bei dem morsen dachte ich mir, dass er k und l vlt in 3er-arrays hat. sonst müsste ich ja bei s=k,k,k jedes mal nach dem komma suchen...
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

naja bei den Bild mit 4 Farben könntest du für 4 Pixel eine Variable vom Typ Byte nutzen :
1Byte = 8Bit
0000000
=>
4Pixel:
00 00 00 00
\/
4Farben:
00 rot
01 grün
10 blau
11 weiss

PS: habe das gefühl ich verstehe gerade das Thema falsch :freak:
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
spider84
Beiträge: 76
Registriert: 05.03.2008 03:06

Beitrag von spider84 »

ich möchte einfach zwei dinge wissen:

1. kann ich in PB wie in Delphi einen Datentyp Farbe machen, der werte wie "rot" oder "blau" als Typ entgegennimmt (und mich in dem Stil "IF pixel(12,23)=blau THEN..." programmieren lässt)?

2. wie realisiere ich eine folge von Werten, deren Länge variiert am geschicktesten. Zum Beispiel wenn ein "a" kodiert werden soll als Folge 23, 45, 12 - pack ich das am besten in ein Array, das 3 Spalten breit ist oder gibt es geschicktere Lösungen. Und wie erkenne ich ob das Ding nun alle 3 Arrays belegt bei Buchstaben mit kürzerer Kodierung?
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Beitrag von Riacon »

sowas?

Code: Alles auswählen

structure pixel
  rot.b
  gruen.b
  blau.b
endstructure

dim bild.pixel(800,600)
sehrblau=rgb(0,0,250)

if bild(12,23)\blau=sehrblau
end
endif
pb 4.51 win7 64
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

1. kann ich in PB wie in Delphi einen Datentyp Farbe machen, der Werte wie "rot" oder "blau" als Typ entgegennimmt (und mich in dem Stil "IF pixel(12,23)=blau THEN..." programmieren lässt)?
Direckt nein (soweit ich weis)

du kannst nur einen Definieren das pixel() vom Typ Byte ist, und dann ein #Blau und ein #Rot .... als Konstanten definieren die dann werde zwischen -128 und 127 haben.

Sodass es dann so sein wird :

Code: Alles auswählen

#Blau = 1
#Rot = 2
;...
Dim Pixel.b(30,30)
If Pixel(12,23)=#Blau
 ; Mache etwas
ElseIf Pixel(12,23)=#Rot
 ; Mache was anderes
EndIf
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten