DLL gibt nur 64 Zeichen zurück

hallo,

ich schreibe mit VBA ein Makro für SolidWorks. Ich möchte eigentlich nur den Dateinamen des aktuell geöffneten Modells einlesen. Dazu gibt es folgende funktion:

swApp.GetOpenedFileInfo filename, options

die funktion gibt halt filename (string) und options (long) zurück.

ich habe folgenden code eingebaut:

Dim DateiGeöffnet As String
Dim longstatus As Long
a = swApp.GetOpenedFileInfo(DateiGeöffnet, longstatus)
Msgbox DateiGeöffnet

Leider gibt die Funktion nur genau 64 Zeichen zurück. Da aber Pfad & Dateiname zurückgegeben wird ist das oft zu wenig. Der Rest fehlt einfach.

Ich denke ich muss vorher die Variable noch irgendwie „formatieren“,oder? (wenn ja, wie???)
Hat jemand eine Idee woran das sonst liegen könnte?

danke für jeden tipp!

Hallo Typson,

laut http://www.cad.vc/solidworks/sldworksgetopenfilename ist dein Aufruf schon falsch :confused:

Was bekommst du denn für ein Wert in A zurueck wenn einmal der Pfad weniger und einmal mehr wie 64 Zeichen sind?

Dim x As String
x = Space(100)

legt dir einen String mit einer Länge von 100 Zeichen an, die mit Leerzeichen gefuellt sind :smile:

MfG Alex

Hallo Alex,

dein Link führte zu einer anderen funktion, welche ich auchschon erfolglos getestet habe…

Was bekommst du denn für ein Wert in A zurueck wenn einmal der
Pfad weniger und einmal mehr wie 64 Zeichen sind?

das mit dem „a = …“ war nur mal ein versuch. Sowohl bei weniger als auch bei mehr als 64 Zeichen bleibt die Variable leer.

Dim x As String
x = Space(100)

legt dir einen String mit einer Länge von 100 Zeichen an, die
mit Leerzeichen gefuellt sind :smile:

Hab ich jetzt mal ausprobiert. Führt zum gleichen Ergebnis: nach 64 Zeichen ist einfach Schluß. Woran kann das denn liegen?

Danke dir trotzdem, gruß chris

Für alle die es interessiert:

swApp.GetFirstDocument.GetPathName

bringt den vollständigen Pfad & Name & Dateiendung

swApp.GetFirstDocument.GetTitle

bringt nur den Name…

mit GetNextDocument wählt man dann das nächste geöffnete Dokument an…

Grüße Chris