AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung GUID nicht unique unter iOS / Android
Thema durchsuchen
Ansicht
Themen-Optionen

GUID nicht unique unter iOS / Android

Ein Thema von AndyDF · begonnen am 17. Mär 2016 · letzter Beitrag vom 20. Mär 2016
Antwort Antwort
Seite 1 von 2  1 2      
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#1

GUID nicht unique unter iOS / Android

  Alt 17. Mär 2016, 15:32
Hallo,

kann es sein, dass TGUID.NewGuid bei Verwendung unter Android / iOS nicht zwingend eine unique GUID liefert? Zumindest wenn man mehrere GUID´s auf einmal benötigt und somit den Aufruf von TGUID.NewGuid schnell hintereinander ausführt?

Ich kann das eindeutig nachvollziehen, wenn ich mir z.B. 100 Guid´s generiere und mir das Ergebnis anschaue. Da gibt es Kollisionen!
Hat mich ein wenig erschrocken, da es in meinen Programmen vorkommt, dass ich mal eine gewisse Anzahl von GUIDs auf einmal benötigt...

Wie es scheint, sind die GUID´s unter Android / iOS auch von einer ganz anderen Version. Unter Windows ist die erste Ziffer des dritten Blocks immer eine "4".

Code:
Android GUID: F66F17BA-F4E6-E511-89B9-60F81DC7385A
Windows GUID: A38CB014-7CEE-4B23-AACF-2E8985D82691
Andy
Andreas Blenk
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: GUID nicht unique unter iOS / Android

  Alt 17. Mär 2016, 15:49
Ich kenne keine Interna, aber sowas hatten wir mal bei unterschiedlichen Geräten einer Charge. Kann also offenbar sein.
Es war allerdings nicht aus TGuid.
Gruß, Jo
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: GUID nicht unique unter iOS / Android

  Alt 17. Mär 2016, 19:06
Ich meine der richtig Aufruf ist createGuid(meineTGuidVar);
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: GUID nicht unique unter iOS / Android

  Alt 17. Mär 2016, 19:19
Ohh ja doof...

Kleines Testprogramm anbei...

Windows OK..

iOS Sim & Device doppelte aufeinanderfolgende GUID's

Mavarik
Angehängte Dateien
Dateityp: zip GUIDTEST.zip (1,5 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.462 Beiträge
 
Delphi 12 Athens
 
#5

AW: GUID nicht unique unter iOS / Android

  Alt 17. Mär 2016, 19:45
Ich meine der richtig Aufruf ist createGuid(meineTGuidVar);
Hast du schon mal nachgesehen, was TGUID.NewGuid genau tut?

Delphi-Quellcode:
class function TGuidHelper.NewGuid: TGUID;
begin
  if CreateGUID(Result) <> S_OK then
    RaiseLastOSError;
end;
Der eigentliche Unterschied liegt in CreateGUID , was vollkommen verschiedene Implemenationen unter Windows und allen Posix-Systemen hat. Kann natürlich sein, daß die Implementierung in den nicht-Windows-Systemen buggy ist. War zumindest früher schon mal der Fall: #150 uuid_generate_time generates duplicate UUIDs
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: GUID nicht unique unter iOS / Android

  Alt 17. Mär 2016, 20:23
Hmm, kann Zufall sein, hatte es nicht weiter überprüft, aber in einem iOS-Projekt lieferte TGuid.NewGuid auch doppelte IDs. Hatte dann createGuid genommen und keine Probleme mehr (?).... . Schau ich mit morgen nochmal an, nicht dass ich da eine Leiche habe...
Philip
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 09:42
Macht da jemand einen Quality-Eintrag? Das ist ja schon kritisch. Wir verwenden in unserer App auch GUIDs. Allerdings generieren wir bisher nicht mehrere direkt hintereinander.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.462 Beiträge
 
Delphi 12 Athens
 
#8

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 11:13
Macht da jemand einen Quality-Eintrag? Das ist ja schon kritisch. Wir verwenden in unserer App auch GUIDs. Allerdings generieren wir bisher nicht mehrere direkt hintereinander.
Ich bin mir gar nicht sicher, daß der Fehler tatsächlich im Delphi steckt und damit dort überhaupt behoben werden kann. Delphi ruft in allen Fällen eine externe Bibliothek des Betriebssystems auf. Wenn der Fehler dort liegt, hat man kaum eine Chance das zu umgehen. Selbst wenn das in einer Version x dieser Bibliothek gefixt ist, kann man ja noch nicht mal davon ausgehen, daß auf dem Zielgerät auch diese Version im Einsatz ist.

Der UUID-Generator von Android richtet sich nach RFC 4122, der geht intern von einer Auflösung der Systemzeit von 100 ns aus. Werden innerhalb dieser 100 ns aber weiter UUIDs generiert, kommt es per Definition schon zu Kollisionen, die vom Algorithmus abgefangen werden sollten.

Vielleicht erzeugt Delphi einfach nur zu schnellen Code

Du kannst ja mal versuchen, ein Sleep(1) zwischen die Generierung zu setzen. Bei 100 GUIDs hast du dann eine Verzögerung von 100 ms. Das ist zwar nicht schön, aber besser als kollidierende GUIDs.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 11:20
Du kannst ja mal versuchen, ein Sleep(1) zwischen die Generierung zu setzen. Bei 100 GUIDs hast du dann eine Verzögerung von 100 ms. Das ist zwar nicht schön, aber besser als kollidierende GUIDs.
Oder einfach das letzte GUID zwischen speichern und nur bei Gleichheit einfach kurz warten und dann nochmal die Routine aufrufen...
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 11:33
Das macht man aber auch nur, wenn man weiss, dass dort ein Problem bestehen kann. Und wer weiss das (außer uns paar hier) jetzt?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:07 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