kleine Spielerei mit StructureUnion und Datum zerlegen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

kleine Spielerei mit StructureUnion und Datum zerlegen

Beitrag von hjbremer »

Finde ich irgendwie eleganter als ein Datum mit MID zu zerlegen.

Code: Alles auswählen

Structure datum1
  tag.s{2}
  pk1.s{1}
  mon.s{2} 
  pk2.s{1}
  jahr.s{4}
EndStructure 

Structure datum2
 StructureUnion 
  s.s{10}
  d.datum1
 EndStructureUnion
EndStructure 

  Dim d1.datum2(5)
  
  d1(0)\s="05.04.2008"   
  d1(1)\s="07.05.2009"    
  
  Debug d1(0)\d\tag
  Debug d1(0)\d\mon
  Debug d1(0)\d\jahr
  Debug "---"
  
  Debug d1(1)\d\tag
  Debug d1(1)\d\mon
  Debug d1(1)\d\jahr
  Debug "---"
    
  d2.datum2\s="15.11.2010"   
  
  Debug d2\d\tag
  Debug d2\d\mon
  Debug d2\d\jahr
  Debug "---"
  
PS: Kann man natürlich auch für andere Strings umbauen
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Gute Idee!

Jetzt weiß ich endlich was StructureUnion macht...
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag von milan1612 »

Andreas_S hat geschrieben:Jetzt weiß ich endlich was StructureUnion macht...
Jupp, geht mir genauso...
Danke hjbremer, sehr anschaulich und vor allem praktisch :allright:
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

Jup, Danke ebenfalls.
Dieses Beispiel sollte in die Hilfe :allright:
Windows 11 - PB 6.03 x64
_________________________________
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

Danke für die Blumen :D
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

im Prinzip wird das ja auch bei den Farben eingesetzt:

Ist mir aber auch erst jetzt aufgefallen als ich dein Code gesehen habe :wink: , auch danke von mir.

Code: Alles auswählen

Structure RGB
 R.c
 G.c
 B.c
EndStructure

Structure Farbe 
 StructureUnion 
  Farbe.l 
  Wert.RGB 
 EndStructureUnion 
EndStructure 

MeineFarbe.Farbe\Farbe = RGB(128,64,255)

Debug MeineFarbe\Farbe

Debug MeineFarbe\Wert\R
Debug MeineFarbe\Wert\G
Debug MeineFarbe\Wert\B

MeineFarbe\Wert\G = 190

Debug Green(MeineFarbe\Farbe)
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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

@STARGATE:
Wieso nutzt du 'R.c', 'G.c' und 'B.c'? Da muss jeweils ein 'b' dahinter, kein 'c'.
Wenn man den Code mit Unicode-Support an kompiliert, funktioniert er
nämlich nicht mehr, weil dann 'Character' 2 Bytes belegt.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

na ganz einfach Nic:
16728192
-128
64
-1
190
Das wäre ein bisschen quark.
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
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

STARGÅTE hat geschrieben:na ganz einfach Nic:
16728192
-128
64
-1
190
Das wäre ein bisschen quark.
Wie wäre es mit (r.b & $FF)? :freak:
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

ja lol, dann muss ich aber über all diesen anhang mitschleifen, da bleibe ich lieber bei .c und kein Unicode.

Wenn jemand Unicode braucht soll er hat es mit Umwegen machen :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
Antworten