Nur zahlen und buchstaben sollen ausgegeben werden

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Ulti
***
Beiträge: 64
Registriert: Sa, 25.01.2014 13:03

Nur zahlen und buchstaben sollen ausgegeben werden

Beitrag von Ulti »

hallo liebes forum,

kann mir jemand sagen wie man dieses Macro so umändert das nur Buchstaben oder Zahlen aufkommen?

Code: Alles auswählen
function f_create_PW
dim password as string
password = ""
dim npw as integer
for i = 0 to 3
npw = 33 + int(rnd()*94)
password = "" & password & chr(npw)
next i
f_create_PW = password
end function



Ich zähl mal auf wie ich es verstehe

dim [erstellt eine Variable (hier password)] as string [als eine Zeichenfolge]
password = "" [der Text(string) ist erstmal leer]
dim [erstellt eine Variable (hier npw)] as integer [als eine Zahl zwischen +-32768]
for i = 0 to 3 [i ist ein zähler es sollen 4 stellen ausgegeben werden]
npw = 33 + int(rnd()*94) [nwp = die zahl 33 + eine zufällige integerzahl * 94]
password = "" & password & chr(npw) [das password ist = der Text und die Variable password und chr(npw), also das ASCII-Zeichen für npw aus dieser Tabelle (http://www.asciitable.com/)]
next i ( nächste Stelle des passwords bis alle 4 stellen voll sind)
f_create-PW = password (Passwort ist erstellt)

wie könnte man das PW nur mit den ASCII-Bereichen füllen?
laut der Tabelle sind

48-57 (Zahlen)
65-90 (Großbuchstaben)
97-122 (Kleinbuchstaben)

Gruß ulti
Zuletzt geändert von Ulti am Do, 20.03.2014 13:26, insgesamt 1-mal geändert.
Win 7 Enterprise (32 Bit), LO 4.2.1, AOO 4.0.1, Excel 2003
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Nur zahlen und buchstaben sollen ausgegeben werden

Beitrag von Karolus »

Hallo

Achtung Python:

Code: Alles auswählen

import string
import random
alle = string.ascii_letters + string.digits
password = ''.join(random.sample(alle, 4))
 
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Ulti
***
Beiträge: 64
Registriert: Sa, 25.01.2014 13:03

Re: Nur zahlen und buchstaben sollen ausgegeben werden

Beitrag von Ulti »

danke, aber für phyton müsse laut Lappi eine JRE installiert werden, und leider wird die Installation jedesmal abgebrochen.

Ich hab folgende änderung vorgenommen

aus
npw = 33 + int(rnd()*94)
password = "" & password & chr(npw)

wurde

npw = 3 + int(rnd()*9)
password = "" & password & npw

so werden nur 4 zahlen ausgegeben, ist dann halt wie ein Pine Nummer =)
Win 7 Enterprise (32 Bit), LO 4.2.1, AOO 4.0.1, Excel 2003
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Nur zahlen und buchstaben sollen ausgegeben werden

Beitrag von Karolus »

Ulti hat geschrieben:danke, aber für phyton müsse laut Lappi eine JRE installiert werden, und leider wird die Installation jedesmal abgebrochen.
Nein python benötigt keine JRE auch wenn dein Lappi das behauptet.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Ulti
***
Beiträge: 64
Registriert: Sa, 25.01.2014 13:03

Re: Nur zahlen und buchstaben sollen ausgegeben werden

Beitrag von Ulti »

hmm, okay ich schau mal ob ich was hinbiegen kann...
Win 7 Enterprise (32 Bit), LO 4.2.1, AOO 4.0.1, Excel 2003
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Nur zahlen und buchstaben sollen ausgegeben werden

Beitrag von Karolus »

Im angehängten Dokument steckt eine Funktion zum einfügen eines Passworts in die aktuell selektierte Zelle

Code: Alles auswählen

import uno
from os import path
from string import ascii_letters, digits
from random import sample


ctx = uno.getComponentContext()
servicemanager = ctx.ServiceManager
createUnoService = servicemanager.createInstance
file_access = createUnoService("com.sun.star.ucb.SimpleFileAccess")
pathsubstution = createUnoService("com.sun.star.util.PathSubstitution")

def install_me(*_):
    """
    Funktion zum kopieren dieses eingebetteten Pythonscripts
    ins den .userconfig_python_pfad"""

    pythonfolder = pathsubstution.substituteVariables('$(user)/Scripts/python/',0)
    filename = path.basename(__file__)
    if not file_access.isFolder( pythonfolder):
        file_access.createFolder(pythonfolder)
    file_access.copy(__file__, path.join( pythonfolder, filename))
    
def password():
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.getCurrentSelection()
    sel.String = ''.join(sample(ascii_letters + digits , 4))
 
Eine Funktion zum kopieren in dein Benutzerverzeichniss ist auch mit dabei.
passwort.ods
(12.72 KiB) 102-mal heruntergeladen
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LeneKai
Beiträge: 7
Registriert: Do, 03.04.2014 09:43

Re: Nur zahlen und buchstaben sollen ausgegeben werden

Beitrag von LeneKai »

Hi ulti

Hier Zwei Basic Funktionen für die Lösung.

Code: Alles auswählen

'Erzeuge Random Nummer (double)
  Function RndRange(lowerbound as double, upperbound as double) as double
    RndRange= lowerbound + Rnd() * (upperBound - lowerbound)
    
  end Function
  
  'Erzeuge Passwort
  function f_create_PW(Passwortlaenge as integer) as string
    dim password as string
    dim npw as integer, i as integer
    
    password = ""
    i=0 
    while i < Passwortlaenge
     npw = int(RndRange(48,122))
     If (npw > 47 and npw < 58) or (npw >64 and npw < 91) or (npw > 96 and npw < 123) then
       password = password & chr(npw)
       i=i+1
     end if  
    wend
    
   f_create_PW = password
end function

Gruß Kai
Antworten