Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   PersoGen (https://www.delphipraxis.net/41537-persogen.html)

Interceptor 4. Mär 2005 19:55


PersoGen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi Leute,

ich möchte euch heute meinen Personalausweisnummern-Generator (kurz "PersoGen") vorstellen.
Dieser ist in der Lage, gültige Personalausweisnummern zu erzeugen & zu verifizieren.

Und weil das ganze ohne Sourcecode ja langweilig wäre, pack ich ihn gleich mit dazu :???:
Der Algorithmus hierzu ist im Web frei verfügbar unter der Adresse (http://www.aspheute.com/artikel/20020507.htm)

Viel Spaß beim Code-studieren,
Interceptor

Kernel32.DLL 4. Mär 2005 20:06

Re: PersoGen
 
Is' zwar ganz nett, aber was soll ich damit? Ich hab' doch ein gültigen Perso.

Ach... Jetzt weiß ich... Es gibt Webseiten, die das checken... Ich besuche solche Seiten nur nie... Aber egal. Das Programm an sich ist zumindestens ganz ok.

Interceptor 4. Mär 2005 20:09

Re: PersoGen
 
Über Sinn und Zweck lässt sich streiten, war halt eher sowas wie ne "Machbarkeitsstudie" :wink:
Hab den Algo im Web gesehn und dachte dass sich das doch ganz nett umsetzen lassen würde

Mfg, Interceptor

Khabarakh 4. Mär 2005 20:51

Re: PersoGen
 
Zitat:

---------------------------
PersoGen.exe - Fehler in Anwendung
---------------------------
Error
---------------------------
Runtime error 216 at 0040360A
---------------------------
OK
---------------------------

---------------------------
Beim Start der Exe
(XP SP1)

Airblader 5. Mär 2005 12:27

Re: PersoGen
 
Soso...ein Geburtsjahr im Jahre 1990 ist also gültig?

Die Schrift des Hintergrundes ist leider kaum zu lesen...über Legalität dieses Teils lässt sich streiten

air

Luckie 5. Mär 2005 12:31

Re: PersoGen
 
Zitat:

Zitat von Airblader
Soso...ein Geburtsjahr im Jahre 1990 ist also gültig?

Wurden in dem Jahr keine Kinder geboren? :gruebel: :shock:

BenjaminH 5. Mär 2005 12:35

Re: PersoGen
 
[OT]
Zitat:

Zitat von Luckie
Zitat:

Zitat von Airblader
Soso...ein Geburtsjahr im Jahre 1990 ist also gültig?

Wurden in dem Jahr keine Kinder geboren? :gruebel: :shock:

Nur leider keine die jetzt schon 16 sind :-( [/OT]

Airblader 5. Mär 2005 13:17

Re: PersoGen
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Airblader
Soso...ein Geburtsjahr im Jahre 1990 ist also gültig?

Wurden in dem Jahr keine Kinder geboren? :gruebel: :shock:

Ich bin '90, aber ich wüsste nicht dass ich bisher schon nen Perso bekommen hab :)

Interceptor 5. Mär 2005 13:22

Re: PersoGen
 
Das Tool / der Source soll eigentlich vielmehr demonstrieren, wie solche Personalausweisnummern überhaupt errechnet werden.
Du kannst in dem Programm auch ein Geburtsjahr anno 1750 angeben, ob es zur damaligen Zeit schon Personalausweise gab, geschweige denn ob diese Person überhaupt noch lebt interessiert den Algorithmus herzlich wenig.

Meflin 5. Mär 2005 14:03

Re: PersoGen
 
ähm ja und warum muss ich Mustermann heissen? warum kann man da keinen namen eingeben ?

edit: und "kaum zu lesen" ist eine echte untertreibung ;)


MathiasSimmack 5. Mär 2005 14:05

Re: PersoGen
 
Wieso "Name eingeben"? Kann man das Teil dann ausdrucken? :shock: Na ja, das wär doch mal was für die nächste Party.

Interceptor 5. Mär 2005 14:10

Re: PersoGen
 
Zitat:

ähm ja und warum muss ich Mustermann heissen? warum kann man da keinen namen eingeben ?
Weil's für die erzeugte ID keine Relevanz hat :wink:

Joa, die Schriften sind wirklich schwer zu lesen, dat stimmt wohl. Hm, stört das wirklich so arg?
However, das interessanteste an dem Teil ist IMHO der Sourcecode der PersoID.pas, in der die Logik zur Errechnung solcher ID's implementiert ist.

Punkto Legalität:
Ich hab lang gezögert bevor ich mich entschlossen hab den Source zu veröffentlichen. Andererseits, wenn der Algorithmus sogar auf aspheute.com veröffentlicht ist, dann wird das wohl keine Probleme geben, denk ich.

gekmihesg 5. Mär 2005 15:05

Re: PersoGen
 
ich muss dich leider enttäuschen ;)
dein algo is falsch. ich hab den randomstring am anfang durch meine nummer ersetzt und die beiden daten wie bei meinem eingestellt. es stimmt alles bis auf die letzt prüfsumme (also die letzte zahl) die is bei mir aufm ausweis nämlich 6 und nicht 2.
ich hab das ganze dann selber (in php) geschrieben und da gehts.
schau dir am besten das nochmal genau an: http://www.pruefziffernberechnung.de...sweis-DE.shtml

whiteshark 5. Mär 2005 15:18

Re: PersoGen
 
Ich würde mir noch ein "Drucken"-Button wünschen! ;-)
Und das man den Namen und alle selber eingeben kann. Damit man den Ausweis auch schön verwenden kann. ;-)

(kleiner Scherz am Rande)

MathiasSimmack 5. Mär 2005 15:46

Re: PersoGen
 
Zitat:

Zitat von Interceptor
Ich hab lang gezögert bevor ich mich entschlossen hab den Source zu veröffentlichen. Andererseits, wenn der Algorithmus sogar auf aspheute.com veröffentlicht ist, dann wird das wohl keine Probleme geben, denk ich.

Geiler wär´s gewesen, wenn du den Algo anhand der blanken Theorie nachgebaut hättest. So wie Popov und ich vor ... oh ... gut 2 Jahren. Doch schon so lange her. Weiß gar nicht wo ich meinen Generator habe. :gruebel:

Interceptor 5. Mär 2005 16:33

Re: PersoGen
 
Wie meinste das, nach der blanken Theorie?

Alles was ich wusste war, dass die 1. Zahl mit 7 multipliziert wird, die 2. mit 3, die 3. mit 1 usw...
dass die Restbeträge aus den Blöcken die Prüfsummen ergeben...
Joa, und aus den Angaben hab ich das Dingens hier zusammengeschustert.

Den C# Code auf der Seite hab ich mir damals auch nicht weiter angeguckt...

Vader 6. Mär 2005 08:11

Re: PersoGen
 
hallo,

wenn ich den source-code starte kommt die fehlermeldung:
RersoGen.res nicht gefunden und Klasse TJv Transparent Button
nicht gefunden ????

was muß ich machen ?

mfg vader

toms 6. Mär 2005 08:19

Re: PersoGen
 
Zitat:

Zitat von Vader
hallo,

wenn ich den source-code starte kommt die fehlermeldung:
RersoGen.res nicht gefunden

Einfach ignorieren.

Zitat:

und Klasse TJv Transparent Button
nicht gefunden ????
was muß ich machen ?

Die Hier im Forum suchenJVCL installieren.

Khabarakh 6. Mär 2005 08:19

Re: PersoGen
 
Zitat:

Zitat von Vader
hallo,

wenn ich den source-code starte kommt die fehlermeldung:
RersoGen.res nicht gefunden und Klasse TJv Transparent Button
nicht gefunden ????

was muß ich machen ?

mfg vader

Das erste kannst du ignorieren, für das zweite brauchst du wohl die neueste Version der JVCL.

Vader 6. Mär 2005 11:01

Re: PersoGen
 
hallo,

danke alles klar !

mfg vader

Ultimator 14. Sep 2005 17:45

Re: PersoGen
 
Auf die Gefahr hin, dass ich mich unbeliebt mach: Ich hab anscheinend eine ungültige ID auf meinem Perso :mrgreen:

Hab die ID genau so abgetippt, wie sie auf meinem Ausweis draufsteht, aber er sagt mir, dass die ID ungültig ist :shock:

ibp 14. Sep 2005 18:20

Re: PersoGen
 
Zitat:

Zitat von Ultimator
Auf die Gefahr hin, dass ich mich unbeliebt mach: Ich hab anscheinend eine ungültige ID auf meinem Perso :mrgreen:

d.h. du bist illegal! :shock:
... ich hab die grünen schon informiert! :mrgreen: :mrgreen:

PierreB 14. Sep 2005 18:23

Re: PersoGen
 
Zitat:

Zitat von Ultimator
Auf die Gefahr hin, dass ich mich unbeliebt mach: Ich hab anscheinend eine ungültige ID auf meinem Perso :mrgreen:

Da hier scheinbar keiner deine Nummer kennt und es bei allen anderen geht, schreib doch einfach mal deine Nummer hier in den Thread. :mrgreen:

Matze 14. Sep 2005 18:31

Re: PersoGen
 
Zitat:

Zitat von Ultimator
Hab die ID genau so abgetippt, wie sie auf meinem Ausweis draufsteht, aber er sagt mir, dass die ID ungültig ist :shock:

Meine auch, falls es die ist, die auf der Vorderseite (die mit dem Foto) ganz unten steht, also die komplette Zeile.

n0b0dy 14. Sep 2005 18:41

Re: PersoGen
 
bei mir ebenfalls ungültig... :?

shmia 14. Sep 2005 18:46

Re: PersoGen
 
Dein Exception-Handling ist unsauber/fehlerhaft!
Delphi-Quellcode:
function IsValidID(ID: string): boolean;
begin
  try
    Row1 := .....
    ..... // ***
    if not
        ((Ps1 = StrToInt(ID[10])) and
        (Ps2 = StrToInt(ID[20])) and
        (Ps3 = StrToInt(ID[28])) and
        (Ps4 = StrToInt(ID[36]))) then
      result := false
    else
      result := true;
  except
    exit
  end;
end;
Wenn nun an der Stelle, die mit *** gekennzeichnet wurde eine Exception auftritt ??
Du wirst niemals erfahren, was schiefgelaufen ist und ausserdem ein undefiniertes Result erhalten.
Korrektes Exception-Handling sieht so aus:
Delphi-Quellcode:
function IsValidID(ID: string): boolean;
begin
  try
    Row1 := .....
    ..... // ***
    if not
        ((Ps1 = StrToInt(ID[10])) and
        (Ps2 = StrToInt(ID[20])) and
        (Ps3 = StrToInt(ID[28])) and
        (Ps4 = StrToInt(ID[36]))) then
      result := false
    else
      result := true;
  except
  on E:Exception do
  begin
     E.Message := 'Fehler in IsValidID('+ID+')'#13#10+
        E.Message;
     raise;
  end;
  end;
end;
Der Aufrufer, bekommt eine recht genaue Beschreibung, was schiefgelaufen ist.
Die Exception wird nur abgefangen und erneut ausgelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz