| |
VB.NET - FortgeschritteneRe: FileOpen FileGet Lese Fehler | | | Autor: Kuno60 | Datum: 06.11.22 19:52 |
| Hallo DjTommy,
FileGet hat eine Überladung für String, aber keine Überladung für Byte().
Es gibt nur eine Überladung für Array. Eine Konvertierung von Array in Byte(), ist eine Typeinschränkung, also bei der Zurückkonvertierung über ByRef.
FileGet ist eine Methode, die Kompatibel zu VB6 ist. Besser ist es reine .NET-Methoden zu verwenden.
"Option Strict On" ist sehr hilfreich bei Typfehlern, aber es gibt Fälle wo man es ausschalten muss. Zum Beispiel bei eingeschränkter Konvertierungen über ByRef oder wenn mit dem Typ Object gearbeitet wird und der Typ zur Entwurfszeit nicht feststeht. Es ist zwar manchmal auch mit Strict On möglich, aber nur sehr umständlich.
Setze den betreffenden Code in eine eigene Datei, bei der du oben "Option Strict Off" einfügst. | |
FileOpen FileGet Lese Fehler | | | Autor: dj.tommy | Datum: 06.11.22 13:41 |
| Hallo Leute!
Ich habe alle Projekte auf Option Strict, Option Explicit auf On geschaltet.
Habe viele Fehler gehabt :-o
Jetzt weiß ich, warum ihr mir immer gesagt, ich soll es machen
Jetzt mein Problem.
Ich schreibe und Lese die Dateien immer mit FileOpen.
Der Code: In Beispiel so aus:
Dim Buffer(1024) As Byte
Dim FN As Integer = FreeFile()
FileOpen(FN, QuelleFile, OpenMode.Binary, OpenAccess.Read)
FileGet(FN, Buffer, 1)
FileClose(FN) Ich habe es so geschrieben damit ich ein gewünschten Position und Länge von der Datei auslesen kann.
Da ich jetzt Option Strict eingeschaltet habe, schreibt er mir folgende Fehler
"Option Strict On" lässt das Einschränken von Typ "Array" zu Typ "Byte()" beim Zurückkopieren des ByRef-Parameterwerts "Value" in das entsprechende Argument nicht zu.
Schreibe ich es als String z.B
Dim Buffer As String =Space(1024)
Dim FN As Integer = FreeFile()
FileOpen(FN, QuelleFile, OpenMode.Binary, OpenAccess.Read)
FileGet(FN, Buffer, 1)
FileClose(FN) Dann Funktioniert es unter Option Strict On!?
Was ich wirklich nicht verstehe ist, Ohne Option Strict Funktioniert es, und mit Option Strict Meckert er.
Was für ein Problem hat er mit Einschränkungen?
Wenn ich ein String Variable mit einem bestimmte länge bekannt gebe, ist es eigentlich auch eine Einschränkung.
Ich habe danach gesucht, um den Fehler zu beheben.
Laut Microsoft https://learn.microsoft.com/en-us/dotnet/visual-basic/misc/bc32029
Da Lese ich
Zitat:
Um diesen Fehler zu korrigieren
Versorgen Sie jedes ByRefArgument im Prozeduraufruf mit demselben Datentyp wie der deklarierte Typ, oder drehen Sie Option Strict Off.
Was soll das sein!!
Wie kann ich dieses Problem Lösen?
Wie gesagt ich möchte Byte Arryas einlesen, aber mit bestimmte Länge und Position von der Datei.
Mfg DjTommy | |
Re: FileOpen FileGet Lese Fehler | | | Autor: dj.tommy | Datum: 07.11.22 18:34 |
| Hallo Kuno60!
Danke für deine Antwort und Hilfe.
Ich habe folgendermaßen gemacht.
Ich habe ein Modul erstellt, und dort die Array als String mit der Länge vom Arrays erstellt, eingelesen und als Arrays umgewandelt und weitergebenen.
Somit habe ich den Fehler korrigiert, so das Option Strict auf On stehen kann.
Ist zwar keine Optimale Programmierung aber Funktioniert es wenigstes.
Mfg DjTommy | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
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.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|