Frage

Ich verwende Visual Basic, um ein Makro für Autodesk Inventor zu schreiben. Ich habe ein Makro erstellt, das ein Dateidialog nennt, siehe Code unten. Alles funktioniert in Ordnung, außer wenn ein Benutzer einen Dateinamen mit einem Zeitraum und eine Zahl, die größer als Null ist, verfolgt.

Beispielsweise, wenn ein Benutzer Testdatei setzt.Stest in das Feld und Treffer in Ordnung. Wenn ich nach dem bittet, was sie dort eingeben, dabei. Filenname, bekomme ich "testfile.test". So wie ich sollte.

Wenn der Benutzer jedoch testFile.1 oder testFile.10 oder testFile.1mdksj oder irgendetwas setzt, solange eine Zahl, sofern eine Zahl größer als Null ist, folgt die Periode, die ich zurückbekomme, "Testdatei". Aus irgendeinem Grund wird alles nach der Periode und der Periode entfernt.

Was ist der Grund dafür? Ist das ein Fehler in Visual Basic oder tue ich etwas falsch? generasacodicetagpre.

update:

Ich landete mit dem folgenden "Hack", um die Dinge immer noch beim Umgang mit einer Periode zu arbeiten: generasacodicetagpre.

das funktioniert seit langem auf Windows 7 und dann Windows 10. Leider scheint das Windows 10 Creative Update zu ändern, wie das Dialogfeld Datei funktioniert. Mit dem oben genannten Code kam Fitname, wenn es keine Zeiträume im Namen gab und alles aus der ersten Periode von links abschneiden würde, wenn es einen Zeitraum im Namen gab.

Ich bin nicht wirklich sicher, was in Windows 10 geändert hat, aber es hat meinen Hack ziemlich zerstört. Windows 7 funktioniert immer noch Fein und Windows 10, bevor das Creative Update funktioniert. Ich landete gerade an, um alles in der oben genannten Version von Windows wieder zu funktionieren. generasacodicetagpre.

War es hilfreich?

Lösung

Dies ist eine VB-Eigenschaft, kann aber auch auf VBA erstrecken. Haben Sie versucht, die Speichereinstellungen festzulegen, um mehrdiformierte Erweiterungen zu unterstützen? Versuchen Sie so etwas: generasacodicetagpre.

Diese Einstellung ist beabsichtigt, dass die Verwendung gestrichelter Erweiterungen verwendet werden - die Verwendung von Zeiträumen im Dateinamen. Siehe diese MSDN-Referenz für Dokumentation und Information: http://msdn.microsoft.com/de-us/library/system.windows.Forms.FileDialog.SupportMultIformExtSensions.Supply129

Dies kann also auch ein weiteres Licht abwerfen: Saveas-Dialog mit einem Zeitraum im Dateinamen nicht zurückzuheben

edit

Nachdem Sie die Autodesk-Dokumentation überprüft - eine schwierige und unangenehme Aufgabe, meiner Meinung nach scheint es in der Tat keine Unterstützung für Multiderdenextensionen zu sein. Finden Sie jedoch eine Funktion auf vbaexpress, die ich sehr genau angepasst habe. Die Funktion kann verwendet werden, um Saiten mit inakzeptablen Zeichen enthalten. Der Blog von Jimmy Pena hat eine hervorragende Funktion für nur einen solchen Zweck: http:// www. jpsoftwaretech.com/excel-vba/validate-fileenames/ . Ich habe nur einen Zeitraum und einen Ersetzen zum Code hinzugefügt: generasacodicetagpre.

Jimmy Pena's Blog enthält auch eine rekursive Version, obwohl er es nicht empfehlen kann.

Sie können alle Zeichenfolgen filtern, die als Dateinamen mit einem anderen Zeichen verwendet werden sollen - in diesem Fall ein Leerzeichen. Sie könnten jedoch einen Unterstrich verwenden, oder einen anderen Charakter, den Sie angenehm angesehen haben.

im Allgemeinen, wenn Sie versuchen, Zeiträume für die Versionierung oder einen ähnlichen Zweck verwenden zu können, und Erfinder lässt Sie nicht zulassen, würde ich jedoch dringend empfehlen, zu einem anderen Charakter oder einem Set von Charakteren zu gehen, die eine solche Angabe, ein solcher Unterstrich, " _ ", ein Nummerierungssystem," 001 "," 002 ", ein Schriftzugsystem," AAA "," AAB "oder was auch immer für Ihren Fokus sinnvoll ist.

Wenn Sie nur die Anwendung benutzerfreundlich machen, würde ich vorschlagen, die eingegebenen Strings zu filtern, bevor sie in dem gewünschten Filetyp eingespart werden, und die Filterung der Saiten aus dem Dialogfeld Speichern unterscheiden, wenn die Periodenfilterung Ihnen Trauer gibt. Es kann einen zusätzlichen Schritt hinzufügen, es ist jedoch der beste und einfachste Weg, lästige ungültige Zeichen herauszufiltern, ohne unnötige zusätzliche Probleme für Ihre Benutzer zu erstellen.

~ jol

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top