vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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