Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

GUID Funktion läuft nicht mehr

Begonnen von Mokkie, September 26, 2023, 13:23:32

⏪ vorheriges - nächstes ⏩

Mokkie

Hallo,

ich habe eine alte Anwednung, mdb auf eine neue Version Access 365 umgestellt.
Funktioniert soweit, nur bei meiner Funktion zur Erstellung einer GUID bleibt er hängen und sagt mit Typenunverträglichkeit. Hier die Funktion

Die genaue Stelle in dieser Fkt.: VarPtr(bGUID(0))[/b], clLen)
Function CreateGUID() As String
Const clLen As Long = 50
Dim sGUID As String
Dim tGUID As GUID
Dim bGUID() As Variant
Dim lRtn As Long
Dim i As Integer
Dim bastelsGuid As String



    If CoCreateGuid(tGUID) = 0 Then
        bGUID = String(clLen, 0)
        lRtn = StringFromGUID2(tGUID, [b]VarPtr(bGUID(0))[/b], clLen)
        If lRtn > 0 Then
            sGUID = Mid$(bGUID, 1, lRtn - 1)
        End If
        ' Alle Zeichen ausser Zahlen aus dem String
        ' entfernen
        For i = 1 To Len(sGUID)
            If IsNumeric(Mid(sGUID, i, 1)) Then              ' Hier mit weiterer Schleife
                bastelsGuid = bastelsGuid & Mid(sGUID, i, 1) 'eventuel benötigte Leerzeichen einbauen
            End If
        Next i
       ' GUID übergeben
       CreateGUID = bastelsGuid

    End If

End Function

Das ganze funktioniert im alten System.

Kann es sein, dass es dort Probleme mit den dll's gibt?

' API's
Private Declare PtrSafe Function CoCreateGuid Lib "ole32.dll" (tGUIDStructure As GUID) As Long

Private Declare PtrSafe Function StringFromGUID2 Lib "ole32.dll" (rGUID As Any, _
    ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long

Grüße, Babsi


markusxy

Das Problem hast du nur bei einem Wechsel auf 64 Bit, da die Deklaration nicht angepasst wurde.
VarPtr liefert einen Pointer und in der Deklaration steht ByVal lpstrClsId As Long der Datentyp long - das müsste aber LongPtr sein, damit die Variable einen Pointer aufnehmen kann.

Die restlichen Parameter und vor allem die GUID Struktur sollten natürlich auch geprüft werden, wobei die Struktur das Heikelste ist, beim Rest werden Fehler eher verziehen ;)

Mokkie

Hallo Markusxy,

hab vielen Dank, ich wedre das prüfen.

Gruß, Babsi