Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 15.12.05 15:21 
Hallo, ich möchte URL's in DB zu Online Bildern speichern, aber ich lade die Bilder herunter und will denen aus der URl berechnete eindeutige Nummer aus der URL generieren und die nummer als Dateiname nehmen!

Wie kann ich denn aus einer URL/String eine eindeutige Nummer machen ich meine das ist ein CRC32/Checksum, nur wie sieht die Formel aus? Ich habe mal IMHO gehört dass es solche Komponenten gibt aber braucht man denn da unbedingt Komponenten? Es reicht doch eine Formel dafür und ich denke mal dass die Nummer insgesamt kürzer sein wird als eine URL oder?


Moderiert von user profile iconGausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 15.12.2005 um 14:29
Moderiert von user profile iconTino: Überflüssige Zeilenumbrüche entfernt.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 15.12.05 15:28 
Warum ersetzt du nicht einfach alle Zeichen, die in der URL vorkommen, aber nicht in Dateinamen vorkommen dürfen (z.b. / ? :) durch ähnliche Zeichen (z.B. - $ ;)?

_________________
We are, we were and will not be.
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Do 15.12.05 15:42 
Wenn Du nicht den Dateinamen selbst nimmst, wird alles andere pseudo-eindeutig.

Es ist UNWAHRSCHEINLICH, dass andere Dateinamen die gleiche Ausgabe (Kollision) erzeugen.

Schau mal nach MD5 (128bit) oder SHA1 (160bit) - ansonsten kannst Du gern die Methode von Gausi nehmen.

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 15.12.05 15:59 
user profile iconGausi hat folgendes geschrieben:
Warum ersetzt du nicht einfach alle Zeichen, die in der URL vorkommen, aber nicht in Dateinamen vorkommen dürfen (z.b. / ? :) durch ähnliche Zeichen (z.B. - $ ;)?


Ich speichere in der DB zwar die korrekte URL aber daraus möchte ich eine eindeutige nummer berechnen weil dann
eben die Dateinamen nicht so lang sind, und es ist schöner als so ein Zeichensalat!
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 15.12.05 16:45 
Wieso nimmst du nicht einfach die Id-Nummer aus der Datenbank als Dateinamen (falls du so ne Id überhaupt hast). Ich denke, wenn du Dateinamen wie YYFLKELMNQ8 hast, ist das auch nicht sehr elegant und eine Rückwärtsrechnung ist auch (praktisch) unmöglich.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 15.12.05 21:06 
user profile icondelfiphan hat folgendes geschrieben:
Wieso nimmst du nicht einfach die Id-Nummer aus der Datenbank als Dateinamen (falls du so ne Id überhaupt hast). Ich denke, wenn du Dateinamen wie YYFLKELMNQ8 hast, ist das auch nicht sehr elegant und eine Rückwärtsrechnung ist auch (praktisch) unmöglich.


Ja super, das mit der ID ist ja OK, aber wenn mal in einem Datensatz mehrere URL's zu Bildern sind kann ich das nicht machen
oder? Doch ich kann die ID eines Feldes nehmen, die ID's habe ich, also:

Ich kann die ID/Primärschlüssel und FeldID nehmen
also Primärschlüssel + $ + FeldID z.B. 75676$234.jpg und dann kann ich auch wieder zurückrechnen
das wäre wie die Zuordnung auf einem Schachbrett/Tabelle

  • meine Felder sind in einer TList und haben eine ID
  • Ich durchlaufe die Felder und suche die FeldID welches Feld es ist
  • z.B. ist der Key = 768 und das Feld heißt "xyz"
  • Selektiere ich nachher so: SELECT `xyz` FROM `zzz` WHERE Primary = 768


Hiermit könnte ich also wieder ein Bild zuordnen aber eigentlich brauche ich das nicht, nicht
das ich wüsste aber es könnte sein dass der Benutzer es will,
na ja die Funktion könnte man reinbringen!


Vielen Dank noch für den Tip, ich denke das wird auch die einfachste Variante sein! :wink: