Springen naar inhoud


- - - - -
VS 2015

Expression Is A Value And Therefore Cannot Be The Target Of An Assignment

VB 2019

  • Log in a.u.b. om te beantwoorden
Er zijn 6 reacties in dit onderwerp

#1 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 774 berichten
    Laatst bezocht vandaag, 14:18
  • LocatieMechelen (BE)

Geplaatst op 13 mei 2020 - 19:49

Goed ik vind het nogal redelijk raar maarja een andere lijst is hetzelfde opgebouwd maar dient voor wat anders en daar heb ik ook hetzelfde probleem zien ik nu.

Ik maak een lijst aan van allemaal bestanden dat moeten gekopieerd worden en gaan er dan 1 voor 1 door, maar nu wil ik dat elke bestand een status heeft. De initiële status kan ik wel zetten maar achteraf aanpassen gaat niet, want dan krijg ik "Expression is a value and therefore cannot be the target of an assignment", iemand dat hier meer inzicht over heeft :)

Visual Basic Code:
 Private FileTag As Integer

  Public Enum EnumFileState
		Todo = 0
		Done = 1
		Err = 2
		Skip = 3
		Current = 4
		Directory = 5
	End Enum
	Public Structure StructFileInfo
		Public Property Base As String
		Public Property SourceFile As String
		Public Property Destination As String
		Public Property CRC As String
		Public Property Size As Long
		Public Property State As EnumFileState
	End Structure

	Public Files As New List(Of StructFileInfo)

sub test
'-hier gaat het fout
Files.Item(FileTag).State = EnumFileState.Current
end sub

**In de plaats van een list zou ik beter iets anders gebruiken, maar de lijst was initieel alleen maar een bestandsnaam :) maar daarna wou ik ook de crc er bij induwen en vanwaar naar waar enzo :grin:

#2 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1202 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 13 mei 2020 - 20:53

Bericht bekijkenDamic, op 13 mei 2020 - 19:49, zei:

Visual Basic Code:
'-hier gaat het fout
Files.Item(FileTag).State = EnumFileState.Current



Files.Item(FileTag).State geeft je een kopie terug van het item in de list want dat is een property van een value type (structure).
Dus je doet geen toekenning aan de State van het item in de list, maar aan een een waarde die toch "weggegooid" zal worden.

Oplossing: maak er een field van, maar dat gaat hier niet helpen van Files.Item(index) geeft ook al een kopie terug. :D

#3 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 774 berichten
    Laatst bezocht vandaag, 14:18
  • LocatieMechelen (BE)

Geplaatst op 13 mei 2020 - 21:21

Mmmh ik heb juist gezien dat ik in, Telemeter-Indicator een aparte class voor had gebouwd maar toen deed ik er wel data jongleren mee.
Even wat verder gezocht en nu snap ik het nog beter :) https://www.experts-...t-elements.html

Merci Dirk

Edit dit is het geworden:
Visual Basic Code:
  Public Files As New List(Of FileDataClass)

Public Class FileDataClass
	Public Enum EnumFileState
		Todo = 0
		Done = 1
		Err = 2
		Skip = 3
		Current = 4
		Directory = 5
	End Enum

	Private mBase As String
	Private mSourceFile As String
	Private mDestination As String
	Private mCRC As String
	Private mSize As Long
	Private mState As EnumFileState
	Public Property Base As String
		Get
			Return mBase
		End Get
		Set(value As String)
			mBase = value
		End Set
	End Property
	Public Property SourceFile As String
		Get
			Return mSourceFile
		End Get
		Set(value As String)
			mSourceFile = value
		End Set
	End Property

	Public Property Destination As String
		Get
			Return mDestination
		End Get
		Set(value As String)
			mDestination = value
		End Set
	End Property
	Public Property CRC As String
		Get
			Return mCRC
		End Get
		Set(value As String)
			mCRC = value
		End Set
	End Property
	Public Property FileSize As Long
		Get
			Return mSize
		End Get
		Set(value As Long)
			mSize = value
		End Set
	End Property
	Public Property FileState As EnumFileState
		Get
			Return mState
		End Get
		Set(value As EnumFileState)
			mState = value
		End Set
	End Property
End Class

Veranderd door Damic, 13 mei 2020 - 21:35.


#4 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1202 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 14 mei 2020 - 14:55

Bericht bekijkenDamic, op 13 mei 2020 - 21:21, zei:


Edit dit is het geworden:


Je had gewoon kunnen Structure.. End Structure kunnen vervangen door Class.. End Class
Dat was voldoende.

Dus i.p.v.:

Visual Basic Code:
Public Structure StructFileInfo
	Public Property Base As String
	Public Property SourceFile As String
	Public Property Destination As String
	Public Property CRC As String
	Public Property Size As Long
	Public Property State As EnumFileState
End Structure


dit :
Visual Basic Code:
Public Class StructFileInfo
	Public Property Base As String
	Public Property SourceFile As String
	Public Property Destination As String
	Public Property CRC As String
	Public Property Size As Long
	Public Property State As EnumFileState
End Class



Het is overigens best practice in .NET om niet  te specificeren of het type een Class, een Structure of een Enum betreft.
Dus FileDate voor de klasse, FileState voor de Enum

#5 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 774 berichten
    Laatst bezocht vandaag, 14:18
  • LocatieMechelen (BE)

Geplaatst op 14 mei 2020 - 16:30

Do'h dat ik daar niet aan heb gedacht.

"Het is overigens best practice in .NET om niet  te specificeren of het type een Class, een Structure of een Enum betreft." bedoel je hier mijn naamgeving bij?

#6 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1202 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 15 mei 2020 - 12:46

Bericht bekijkenDamic, op 14 mei 2020 - 16:30, zei:

Do'h dat ik daar niet aan heb gedacht.

"Het is overigens best practice in .NET om niet  te specificeren of het type een Class, een Structure of een Enum betreft." bedoel je hier mijn naamgeving bij?

Jup. Naming Guidelines

#7 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 774 berichten
    Laatst bezocht vandaag, 14:18
  • LocatieMechelen (BE)

Geplaatst op 15 mei 2020 - 17:10

Ow ja die :) zal dat eens toepassen





Ook met taq VS 2015, VB 2019 voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2015] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)