AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Delphi: Unicode <-> Ansi + Algorithmus für Seriennummer
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi: Unicode <-> Ansi + Algorithmus für Seriennummer

Ein Thema von c.wuensch · begonnen am 20. Jan 2005 · letzter Beitrag vom 22. Jan 2005
Antwort Antwort
c.wuensch

Registriert seit: 19. Dez 2004
Ort: Münster
96 Beiträge
 
#1

Delphi: Unicode <-> Ansi + Algorithmus für Seriennumme

  Alt 20. Jan 2005, 21:38
Hallo zusammen,

ich habe ein großes Problem mit Delphi und kann leider nirgendwo im Internet eine passende Antwort finden:

Ich möchte einen String beliebiger Länge in eine Zahlenkette umwandeln, und daraus dann über einen Algorithmus eine Seriennummer erzeugen. Am besten soll diese auch noch umkehrbar sein!

Problem 1:
Der String wird als Unicode übergeben, der Befehl Ord() funktioniert also nicht. Wie kriege ich diesen String denn nur ins ANSI-Format umgewandelt???

Problem 2:
Kennt jemand einen (wenn möglich umkehrbaren) Algorithmus, der aus beliebig vielen Zeichen immer eine Zahlenfolge mit einer festen Zeichenanzahl erzeugt?

Ich würde mich echt freuen, wenn mir jemand helfen könnte!

Cu, chris
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 20. Jan 2005, 21:48
Hi,

wenn der WideString ANSI Zeichen enthält könntest Du einfach nach string casten, also z.B.
Delphi-Quellcode:
var
  WS: WideString;
  S: string;
begin
  WS := 'wide string';
  S := string(WS); // obwohl der Delphi Compiler Dir auch S := WS; durchgehen lässt, aber bei Ord könntest Du so casten
end;
Bei Deinem 2. Problem kann ich Dir leider nicht weiterhelfen
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 20. Jan 2005, 22:27
Zitat von c.wuensch:
...Problem 2:
Kennt jemand einen (wenn möglich umkehrbaren) Algorithmus, der aus beliebig vielen Zeichen immer eine Zahlenfolge mit einer festen Zeichenanzahl erzeugt?....
Das dürfte schwer gehen. Wenn Ich dir 30 Zeichen übergebe und deine "Zahlenfolge" nur 15 Zeichen lang ist hast Du Informationen verloren. Eine Umkehrung geht also nicht. Ich würde aus dem Text einfach einen (MD5)-Hash erstellen und im Programm prüfen ob der Hash zu dem Text passt den der Anwender eingegeben hat.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
c.wuensch

Registriert seit: 19. Dez 2004
Ort: Münster
96 Beiträge
 
#4

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 20. Jan 2005, 23:09
Hi ihr beiden,

vielen Dank für eure Mühe!

@mirage228:
Unglaublich, auf das Einfachste kommt man einfach nicht

Ich hatte es inzwischen so probiert:
Ansi := WideCharToString (pWideChar(Unicode));


@Sharky:
Ein MD5-Hash ist leider zu lang. Aber vielleicht könnte ich einen ähnlichen (vereinfachten) Algorithmus verwenden.
Hast du eine Ahnung, wie so ein MD5-Hash aufgebaut ist???

Cu, chris
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 20. Jan 2005, 23:19
Wie schon gesagt, ist eine solche umkehrbare Funktion unmöglich. Eine Alternative zum MD5 wäre ein Algorithmus wie der, der die Prüfziffer bei ISBN-Nummern liefert. Den solltest du so erweitern können, dass du mehr als eine Ziffer als Prüfsumme hast.
Bei der ISBN-Prüfnummer läuft das Verfahren so ab, dass du die erste Ziffer mit 1 multiplizierst, die zweite mit 3,.. und die n-te mit n und diese Werte addierst. Danach ermittelst du den Abstand zur nächsten durch 10 teilbare Zahl. Dieser Abstand ist dann die Prüfnummer.
Bsp:
12321 -> 1*1+2*2+3*3+2*4+1*5= 26 -> Prüfnummer ist 30-26=4.
// So müsste es eigentlich gewesen sein, war mal Klausuraufgabe, aber ich bin mir nicht mehr hindertprozentig sicher.

Wenn du jetzt die Faktoren änderst, oder in der anderen Richtung zählst, solltest du damit ein halbwegs brauchbares Ergebniss erhalten können.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
c.wuensch

Registriert seit: 19. Dez 2004
Ort: Münster
96 Beiträge
 
#6

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 21. Jan 2005, 00:47
Super Idee, vielen Dank!

Das werde ich gleich morgen mal probieren.

Cu, chris
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 21. Jan 2005, 08:26
Zitat von c.wuensch:
Problem 1:
Der String wird als Unicode übergeben, der Befehl Ord() funktioniert also nicht. Wie kriege ich diesen String denn nur ins ANSI-Format umgewandelt???
Wenn der String als Unicode-String rüberkommt wird er sicherlich auch Sonderzeichen, welche nicht in der Westlichen Codepage vorhanden sind. Deshalb mußt Du eine WideString -> String-Wandlung durchführen, welche umkehrbar ist. Dafür biedet sich UTF8 an. In der Unit System.pas gibt es dazu die Funktionen UTF8Encode/UTF8Decode.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 21. Jan 2005, 08:58
Zitat von c.wuensch:
....Ein MD5-Hash ist leider zu lang. ...
Hai Chris,

Du könntest ja einfach nur einen Teil des Hashwertes für die SN verwenden (dadurch wird es natürlich "unsicherer").

z.B.:
Code:
String        = Sharky der Haifisch
MD5-Hash      = 938C-0D1D-2F14-7EA4-68E7-7D37-F97D-BD49  (ohne die "-" )
Ein Teil davon = 938C-2F14-68E7-F97D
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
c.wuensch

Registriert seit: 19. Dez 2004
Ort: Münster
96 Beiträge
 
#9

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 21. Jan 2005, 19:35
@Bernhard Geyer:

Verarbeitet denn die Funktion WideCharToString oder der Typecast mit String(WideString) die Sonderzeichen nicht korrekt?

@Sharky:

Auch eine sehr gute Idee! Nur, wie kann man mit Delphi einen MD5-Hash erzeugen?

Cu, Chris
  Mit Zitat antworten Zitat
Urmel

Registriert seit: 23. Mai 2004
Ort: Titiwu
28 Beiträge
 
#10

Re: Delphi: Unicode <-> Ansi + Algorithmus für Serienn

  Alt 22. Jan 2005, 09:55
Zitat von c.wuensch:
@Sharky:

Auch eine sehr gute Idee! Nur, wie kann man mit Delphi einen MD5-Hash erzeugen?

Cu, Chris
Ich glaube da ist etwas in der Code-Library bei den Algorithmen. klick
Urmel aus dem Eis
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz