Über die Command$-Funktion lässt sich bekanntlich die Parameterliste abfragen, die beim Starten eines Programms mit angegeben wurden. Häufig kommt es vor, daß man auf diese Weise ein Programm startet, welches dann sofort die im Parameter angegebene Datei für die weiteren Programmaktionen verwenden soll. Das ist alles auch kein Problem - der Code hierfür sieht dann ungefähr so aus: ' Bei Programmstart Public Sub Main() ' Mainform laden Load frmMain ' Parameter vorhanden? If Command$ <> "" Then ' Annahme: Es wurde eine Datei angegeben, ' die ausgelesen und in einer TextBox angezeigt ' werden soll Dim F As Integer Dim sInhalt As String F = FreeFIle Open Command$ For Binary As #F sInhalt = Space$(Lof(F)) Get #F, , sInhalt Close #F frmMain.txtEditor.Text = sInhalt End If ' Mainform anzeigen frmMain.Show End Sub Sie haben nun obigen Code in Ihrem Programm und das ganze funktioniert auch einwandfrei. Doch plötzlich - was passiert? Beim Starten Ihres Programms (natürlich in Verbindung mit einem Dateinamen als Parameter) erhalten Sie auf einmal die Fehlermeldung 52 - Datei oder Dateinummer ungültig. Aber warum? Was tun Sie nun zuerst? Genau! Sie schauen nach, was die Funktion Command$ zurückgibt. Und das wäre (z.B.): "c:\programme\gemeinsame dateien\was für ein text.txt" Na ja, eigentlich alles korrekt - so meint man zumindest im ersten Augenblick. Kurze Prüfung: Jawohl, die Datei existiert auch im angegebenen Ordner. Warum also nur erscheint dieser ominöse Fehler? Bei näherer Betrachtung fällt einem dann endlich folgendes auf: Der Dateiname steht in Anführungszeichen! Warum? Weil der Dateiname (oder der Pfad) Leerzeichen enthält! Also braucht man jetzt lediglich evtl. vorhandene Anführungszeichen ausfiltern - und schwups - schon funktioniert der Code und damit das Programm wieder. ' Bei Programmstart Public Sub Main() ' Mainform laden Load frmMain ' Parameter vorhanden? If Command$ <> "" Then ' Annahme: Es wurde eine Datei angegeben, ' die ausgelesen und in einer TextBox angezeigt ' werden soll Dim F As Integer Dim sInhalt As String ' Evtl. vorhandene Anführungszeichen entfernen Dim sFilename As String sFilename = Replace(Command$, Chr$(34), "") F = FreeFIle Open sFilename For Binary As #F sInhalt = Space$(Lof(F)) Get #F, , sInhalt Close #F frmMain.txtEditor.Text = sInhalt End If ' Mainform anzeigen frmMain.Show End Sub Die notwendigen Codeänderungen sind fett hevorgehoben. Zu beachten ist, daß es die Replace-Funktion erst ab VB6 gibt. Für alle VB4/5-Entwickler haben wir jedoch eine Alternative in unseren Tipps & Tricks Bereich parat: Dieser Tipp wurde bereits 27.278 mal aufgerufen.
Anzeige
![]() ![]() ![]() Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats ![]() Dieter Otter sevTabStrip: Rechtsklick auf Reiter erkennen Eine Funktion, mit der sich prüfen lässt, auf welchen Tab-Reiter ein Mausklick erfolgte sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |