• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

BWW als Funktion in Libreoffice

eknus

Geocacher
Als Myst Löser braucht man man ja immer wieder einen BWW-Rechner, und bei uns in der Gegend sind BWW-Rechner mit Umlauten und berücksichtigen der Zahlen seht beliebt.
Da ich nicht immer Online bin habe ich mir vor Jahren mal einen mit GAMBAS geschrieben ... (ich bin Programmier-Laie ).
Da ich jetzt sowas auch in der Tabellenkalkulation (auf Linux eben in Libreoffice) brauchte habe ich (da ich im Netz nix gefunden habe) jetzt mir was zusammengestoppelt dass nach meinem dafürhalten läuft ...
Damit steht dann die Funktion BWW in CALC zur Verfügung ... (man kann sie mittels Paramater der intern Funktion BUWERT so konfigurieren wie man sie braucht Umlaute, Zahlen bzw. reines ASCII).

Als Hilfe für andere gedacht die auch wie ich ewig gesucht haben aber nix gefunden haben.
Die Logik und Funktion ist selbsterklärend und ist (für einen Kenner) simpel, und normalerweise wohl nicht der Erwähnung wert ... (und deswegen findet man im Netz wohl nix ...)

Einfach rauskopieren und in Libreoffice unter Extras > Makros > Makros verwalten > LibreOffice Basic (z.B. im Standardmodul 1 ) speichern.
Dann sollte es funktioneren .... (Hat es jedenfalls bei mir .... )
Wenn nicht kann ich nur bedingt helfen ... aber man hat zumindest schon mal Kopiervorlage

Code:
REM  *****  BASIC  *****

Function BUWERT(Buchst As String,  ByVal st As Integer) As Integer
  
  Dim aa As Integer
  Dim zz As Integer 
  
  Dim BWert As Integer
  Dim Bst As String
  Dim ste As Integer 
  ste = st
  ' St zulässig ?! 
  Select Case ste
    Case 0 
      BWert = 0
    Case 1 
      BWert = 0
    Case 2
      Bwert = 0
      
    Case Else 
      Bwert = 0
      ste = 0
  End Select
  
  aa = Asc( "a")
  zz = Asc( "z")
  bst = Buchst
  Bst = LCase(Buchst)
  
  If Asc(Bst) >= aa and Asc (Bst) <= zz Then
    BWert = Asc(bst) - Asc("a") + 1
  Else
    BWert = 0
    If st = 1 Or st = 2 Then
      
      Select Case Buchst
        Case "ä", "Ä"
          BWert = 27
        Case "ö" , "Ö"
          BWert = 28
        Case "ü" , "Ü"
          BWert = 29
        Case "ß" 
          BWert = 30 
        Case Else
          If st = 2 And Asc(bst) >= Asc("0") And Asc(bst) <= Asc("9") Then
            Bwert = Val(bst)
          Else  
            Bwert = 0
          Endif
          
      End Select
    Endif
    
  Endif  
  BUWERT = BWert   
End Function

Function BWW (Wort As String) AS INTEGER
  
  Dim I  As Integer
  Dim buchstabe As String
  DIM BWW_INT As Integer 
  BWW_INT = 0
  
  If Len(Wort) > 0 Then 
    For i = 1 To Len(Wort) 
      buchstabe = Mid(Wort, I, 1)
      BWW_INT = BWW_INT + BUWERT(buchstabe, 2)  
    Next
    BWW = BWW_INT
  Else
    BWW = 0 
  Endif
  
End

END function

Function BWW0 (Wort As String) AS INTEGER
  
  Dim I  As Integer
  Dim buchstabe As String
  DIM BWW0_INT As Integer 
  BWW0_INT = 0
  
  If Len(Wort) > 0 Then 
    For i = 1 To Len(Wort) 
      buchstabe = Mid(Wort, I, 1)
      BWW0_INT = BWW_INT0 + BUWERT(buchstabe, 0)  
    Next
    BWW0 = BWW0_INT
  Else
    BWW0 = 0 
  Endif
  
End

END function
 
OP
E

eknus

Geocacher
Gerade noch einen Typo gefunden .... Es muss
BWW0_INT = BWW0_INT + BUWERT(buchstabe, 0)

für die Funktion BWW0 heissen .... sorry
Aber die BWW0 (=ASCII-Variante ohne Zahlen und Umlaute) brauche ich eigentlich nicht so oft ...

Sorry
 
Oben