[About]

[SPEED Ferret Knowledge Base]

[Lillig & Zahn Company Logo]
Run-time error 52: Bad file name or number

Zurück zum Hauptindex

Artikel ID: SFKB0026
Datum: 18. April 2001
Gilt für: SPEED Ferret 4.0

Symptome

Kurz nachdem Sie SPEED Ferret starten, wird die Fehlermeldung 'Run-time error 52: Bad file name or number' angezeigt. Wenn Sie OK drücken, wird SPEED Ferret beendet.

Ursache

Die Projekte, Suchvorgänge, und andere Objekte, die Sie mit SPEED Ferret erstellen, werden in einem Verzeichnis Namens SPEED Ferret Data Store gespeichert. Dieses Verzeichnis wird normalerweise beim ersten Start von SPEED Ferret angelegt.

Gemäß der Microsoft Richtlinien, legt SPEED Ferret den data store im Ordner für ihre persönlichen Daten (Eigene Dateien) an. Um diesen Ordner zu bestimmen, ruft SPEED Ferret die von Microsoft zur Vefügung gestellte Funktion SHGetFolderPath auf. SHGetFolderPath gibt normalerweise Werte wie C:\Dokumente oder Einstellungen\Administrator\Eigene Dateien zurück. Auf manchen Systemen gibt die Funktion SHGetFolderPath jedoch ein Root-Verzeichnis wie z.B. F:\ zurück. Dies bewirkt, das SPEED Ferret eine falsch Pfadspezifikation konstruiert, weil SPEED Ferret immer einen Backslash an den Pfad anfügt.

Temporärer Workaround

Sie können einen anderen Pfad angeben, indem Sie die Windows Registry editieren.

Dazu gehen Sie wie folgt vor:

  1. Clicken Sie auf START in der Windows Taskleiste
  2. Wählen Sie Ausführen...
  3. Geben Sie regedit ein und drücken Sie ENTER.
  4. Gehen sie zum Registrierungsschlüssel HKEY_CURRENT_USER\Software\Black Moshannon Systems\SPEED Ferret\4.0\Options.
  5. Wählen Sie den Options Schlüssel und erstellen Sie eine neue Zeichenfolge Namens DataStore
  6. Setzen Sie den Wert von DataStore auf den Pfad in dem der SPEED Ferret Data Store angelegt werden soll (z.B. C:\MeineDateien)
  7. Verlassen Sie den Registry Editor.

Das nächste Mal wenn Sie SPEED Ferret starten, wird der Data Store im angegebenen Pfad angelegt.

Wir untersuchen diese Angelegenheit gegenwärtig, da wir annehmen, dass die Funktion SHGetFolderPath möglicherweise das falsche Ergebnis zurückliefert, wenn ein Root-Verzeichnis angegeben wird.

Wenn der Fehler 52 bei Ihnen auftritt, würden wir uns freuen etws darüber von Ihnen zu hören, um mehr über dieses Problem herauszufinden. Insbesondere wären wir dankbar, wenn Sie folgenden Quellcode ausführen könnten und uns den Rückgabewert auf Ihrem System mitteilen würden.

Sieht der Pfad korrekt aus?

Zeigt er wirklich auf Ihren persönlichen Ordner (Eigene Dateien)?

Das Problem tritt (zum Glück) selten auf, und wir konnten es auf unseren Testsystemen nicht reproduzieren, daher wäre Ihre Unterstützung hier hilfreich.

Public Const CSIDL_PERSONAL = &H5
Public Const SHGFP_TYPE_CURRENT = 0
Public Const MAX_PATH = 260
Declare Function SHGetFolderPath Lib "shfolder.dll" Alias "SHGetFolderPathA" _
(ByVal hWndOwner As Long, ByVal nFolder As Long, ByVal hToken As Long, _
ByVal dwFlags As Long, ByVal Path As String) As Long

Sub Test()
    Dim Path As String
    Path = Space$(MAX_PATH + 1)
    SHGetFolderPath 0, CSIDL_PERSONAL, 0, SHGFP_TYPE_CURRENT, Path
    Debug.Print Left$(Path, InStr(Path, Chr$(0)) - 1)
End Sub

Permanente Lösung

Wir hoffen, das Problem im ersten Update für SPEED Ferret 4.0 beheben zu können, dass kostenlos zum Download bereit gestellt wird. Das Veröffentlichungsdatum des Updates wurde noch nicht festgelegt. Näheres wird auf unserer Homepage (www.liza.com) bekanntgegeben.

Copyright (c) 1998-2004 Lillig & Zahn Softwarentwicklung und Black Moshannon Systems. Alle Rechte vorbehalten.
SPEED Ferret ist ein Warenzeichen von Black Moshannon Systems.