AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IsGUID?

Ein Thema von PeterPanino · begonnen am 28. Dez 2006 · letzter Beitrag vom 31. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

IsGUID?

  Alt 28. Dez 2006, 16:21
Hallo,

kennt jemand eine Funktion, mit der man verlässlich feststellen kann, ob ein String eine GUID ist, die mit SysUtils.GUIDToString(SysUtils.CreateGUID) erzeugt wurde.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: IsGUID?

  Alt 28. Dez 2006, 16:23
Zitat von PeterPanino:
kennt jemand eine Funktion, mit der man verlässlich feststellen kann, ob ein String eine GUID ist, die mit SysUtils.GUIDToString(SysUtils.CreateGUID) erzeugt wurde.
Eine solche Funktion kann es nicht geben, da die erzeugten nirgendwo gespeichert werden. Du kannst höchstens versuchen zu überprüfen, ob das Format korrekt ist.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: IsGUID?

  Alt 28. Dez 2006, 18:45
[quote="sakura"]
Zitat von PeterPanino:
kennt jemand eine Funktion, mit der man verlässlich feststellen kann, ob ein String eine GUID ist, die mit SysUtils.GUIDToString(SysUtils.CreateGUID) erzeugt wurde.
Eine solche Funktion kann es nicht geben, da die erzeugten nirgendwo gespeichert werden. Du kannst höchstens versuchen zu überprüfen, ob das Format korrekt ist.

Ist eigentlich logisch, deswegen habe ich es nicht so gemeint. Da es ja mehrere GUID-Formate gibt, sollte eine Überprüfung stattfinden, ob der der String überhaupt eine GUID ist, bzw. ob der String eine GUID in diesem Format ist.

Freundliche Grüße und schöne Feiertage!
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#4

Re: IsGUID?

  Alt 28. Dez 2006, 18:48
Falls du GUIDs brauchst, ich kenne einen VBS-Befehl zum kreieren jener.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#5

Re: IsGUID?

  Alt 28. Dez 2006, 19:52
Zitat von fLaSh11:
Falls du GUIDs brauchst, ich kenne einen VBS-Befehl zum kreieren jener.
http://www.jedidjah.dds.nl/Alphabet/SesameL/Lefty.jpg
Hey Du... Ja du... willst Du ein G kaufen? Ich hab da'n Tip.. drück einfach Strg+Shift+G in der IDE

Die Schweizer haben dafür auch einen Tip für Delphi: http://www.swissdelphicenter.ch/de/showcode.php?id=1172


@Topic
Eine GUID sieht ja wie folgt aus: {4F65CB3B-3CE3-4CB8-8D98-DB1BE875F92B}

Prüfe also, ob die GUID von { } eingeschlossen ist und insgesamt (inkl. { und } ) 38 Zeichen lang ist.
Dann prüfst Du, ob an Pos 10, 15, 20 und 25 ein - steht und der Rest zwischen 0 und F liegt (Hex 0-15)

Vorschlag
Delphi-Quellcode:
function IsGUID(aString: string): boolean;
  function ChkSub(aString: string; iStart, iEnd: integer): boolean;
  var
    n: integer;
  begin
    Result := True;
    for n := iStart to iEnd do
      if aString[n] in ['0'..'9', 'A'..'F'] then
      else
      begin
        Result := False;
        break;
      end;
  end;
begin
  Result := (Length(aString) = 38) and (aString[1] = '{') and (aString[10] = '-')
    and (aString[15] = '-') and (aString[20] = '-') and (aString[25] = '-') and
    (aString[38] = '}') and ChkSub(aString, 2, 9) and ChkSub(aString, 11, 14)
    and ChkSub(aString, 16, 19) and ChkSub(aString, 21, 24) and ChkSub(aString,
    26, 37);
end;
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: IsGUID?

  Alt 29. Dez 2006, 02:36
Danke für die Funktion. Wer kennt sich mit regulären Ausdrücken aus und kann eine GUID als regulärer Ausdruck darstellen?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

Re: IsGUID?

  Alt 29. Dez 2006, 02:56
Ich glaube,
Code:
\{[0-9A-F]{8}(-[0-9A-F]{4}){3}-[0-9A-F]{8}\}
müsste es tun..
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: IsGUID?

  Alt 29. Dez 2006, 10:04
Hallo,

ohne reguläre Ausdrücke könnte man so prüfen:

Delphi-Quellcode:
function CLSIDFromString (psz: PWideChar; out clsid: TGUID): HResult; stdcall;
  external 'ole32.dllname 'CLSIDFromString';

function IsValidGUID (const aString: WideString): Boolean;
var
  Dummy : TGUID;
begin
  Result := Succeeded(CLSIDFromString(PWideChar(aString), Dummy));
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: IsGUID?

  Alt 31. Dez 2006, 00:25
Zitat von Dax:
Ich glaube,
Code:
\{[0-9A-F]{8}(-[0-9A-F]{4}){3}-[0-9A-F]{8}\}
müsste es tun..
Ist das absichtlich eine Gruppe zum Einfangen des Ergebnisses? Und sollte die Gegenfrage nicht allgemein erstmal lauten welche RE-Syntax er braucht ... schließlich benutzt nicht jeder PCRE.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: IsGUID?

  Alt 31. Dez 2006, 18:15
Zitat von Hawkeye219:
Hallo,

ohne reguläre Ausdrücke könnte man so prüfen:

Delphi-Quellcode:
function CLSIDFromString (psz: PWideChar; out clsid: TGUID): HResult; stdcall;
  external 'ole32.dllname 'CLSIDFromString';

function IsValidGUID (const aString: WideString): Boolean;
var
  Dummy : TGUID;
begin
  Result := Succeeded(CLSIDFromString(PWideChar(aString), Dummy));
end;
Gruß Hawkeye
Die GUID (wenn es denn eine sein sollte) stammt nicht aus einem COM-Interface, sondern wurde (wie oben angegeben) mit SysUtils.GUIDToString(SysUtils.CreateGUID) erzeugt.
  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 17:37 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