Jump to content
flaviofilipe

Erro com conversão de variável

Recommended Posts

flaviofilipe

Bom dia sou aluno de programação e tenho um projecto para entregar e não descubro onde está o erro se me pudessem ajudar a encontrar onde está o erro agradeço imenso.

Eu tenho este seguinte Código para a minha classe :

e ao correr o programa tenho uma opção de guardar registos num array so que que quando guardo ele disme que a minha dimensão é impossível passar para integer mas ela é uma variavel double

Public MustInherit Class Veiculos
   Dim nome As String
   Dim Peso, Capacidade As Double
   Dim Dimensão As Double
   Dim ano, contacto As Integer
   Dim Modelo, Marca As String
   Dim frigorifico, fogao, lavaloicas, wc, depositodeagua, tv, aquecimento, bateria As Boolean

   Public Property ModeloV As String
       Get
           Return Modelo
       End Get
       Set(value As String)
           Modelo = value
       End Set
   End Property
   Public Property MarcaV As String
       Get
           Return Marca
       End Get
       Set(value As String)
           Marca = value
       End Set
   End Property
   Public Property AnoV As Double
       Get
           Return ano
       End Get
       Set(value As Double)
           ano = value
       End Set
   End Property
   Public Property DimensaoV As Double
       Get
           Return Dimensão
       End Get
       Set(value As Double)
           Dimensão = value
       End Set
   End Property
   Public Property PesoV As Double
       Get
           Return Peso
       End Get
       Set(value As Double)
           Peso = value
       End Set
   End Property
   Public Property CapacidadeV As Double
       Get
           Return Capacidade
       End Get
       Set(value As Double)
           Capacidade = value
       End Set
   End Property
   Public Property NomeV As String
       Get
           Return nome
       End Get
       Set(value As String)
           nome = value
       End Set
   End Property
   Public Property ContactoV As Integer
       Get
           Return contacto
       End Get
       Set(value As Integer)
           contacto = value
       End Set
   End Property
   Public Property FrigorificoV As Boolean
       Get
           Return frigorifico
       End Get
       Set(value As Boolean)
           frigorifico = value
       End Set
   End Property
   Public Property FogaoV As Boolean
       Get
           Return fogao
       End Get
       Set(value As Boolean)
           fogao = value
       End Set
   End Property
   Public Property LavaLoicasV As Boolean
       Get
           Return lavaloicas
       End Get
       Set(value As Boolean)
           lavaloicas = value
       End Set
   End Property
   Public Property WCV As Boolean
       Get
           Return wc
       End Get
       Set(value As Boolean)
           wc = value
       End Set
   End Property
   Public Property DepositoDeAguaV As Boolean
       Get
           Return depositodeagua
       End Get
       Set(value As Boolean)
           depositodeagua = value
       End Set
   End Property
   Public Property tvV As Boolean
       Get
           Return tv

       End Get
       Set(value As Boolean)
           tv = value
       End Set
   End Property
   Public Property AquecimentoV As Boolean
       Get
           Return aquecimento
       End Get
       Set(value As Boolean)
           aquecimento = value
       End Set
   End Property
   Public Property BateriaV As Boolean
       Get
           Return bateria
       End Get
       Set(value As Boolean)
           bateria = value
       End Set
   End Property
   Public Sub New(ByVal modelo As String, ByVal marca As String,
                  ByVal ano As Integer, ByVal Dimensao As Double, ByVal Peso As Double,
                  ByVal Capacidade As Double, ByVal nome As String,
                  ByVal contacto As Integer, ByVal Frigorifico As Boolean, ByVal Fogao As Boolean,
                  ByVal LavaLoicas As Boolean, ByVal WC As Boolean, ByVal DepositoAgua As Boolean,
                  ByVal TV As Boolean, ByVal aquecimento As Boolean, ByVal bateria As Boolean)

       ModeloV = modelo
       MarcaV = marca
       ContactoV = contacto
       AnoV = ano
       DimensaoV = Dimensao
       PesoV = Peso
       CapacidadeV = Capacidade
       NomeV = nome
       FrigorificoV = Frigorifico
       FogaoV = Fogao
       LavaLoicasV = LavaLoicasV
       WCV = WC
       DepositoDeAguaV = DepositoAgua
       tvV = TV
       AquecimentoV = aquecimento
       BateriaV = bateria
   End Sub
End Class
Public Class autocaravanas

   Inherits Veiculos
   Private Motor As Integer
   Private Combustível, Matricula As String
   Public Property MotorA As Integer
       Get
           Return Motor
       End Get
       Set(value As Integer)
           Motor = value
       End Set
   End Property
   Public Property CombustivelA As String
       Get
           Return Combustível
       End Get
       Set(value As String)
           Combustível = value
       End Set
   End Property
   Public Property MatriculaA As String
       Get
           Return Matricula
       End Get
       Set(value As String)
           Matricula = value
       End Set
   End Property
   Public Sub New(ByVal modelo As String, ByVal marca As String,
                   ByVal ano As Integer, ByVal Dimensao As Double, ByVal Peso As Double,
                   ByVal Capacidade As Double, ByVal nome As String,
                   ByVal contacto As Integer, ByVal Frigorifico As Boolean, ByVal Fogao As Boolean,
                   ByVal LavaLoicas As Boolean, ByVal WC As Boolean, ByVal DepositoAgua As Boolean,
                   ByVal TV As Boolean, ByVal aquecimento As Boolean, ByVal bateria As Boolean,
                   ByVal motor As Integer, ByVal combustivel As String, ByVal matricula As String)
      [b][u] MyBase.New(nome, modelo, marca, Frigorifico, Fogao, LavaLoicas, WC, DepositoAgua, TV, aquecimento, bateria, ano, Dimensao, Peso, Capacidade, contacto)[/u][/b]

       MotorA = motor
       CombustivelA = combustivel
       MatriculaA = matricula

   End Sub
End Class
Public Class Caravanas
   Inherits Veiculos
   Dim tipo As String
   Public Property TipoC As String
       Get
           Return tipo
       End Get
       Set(value As String)
           tipo = value
       End Set
   End Property
   Public Sub New(ByVal modelo As String, ByVal marca As String,
                 ByVal ano As Integer, ByVal Dimensao As Double, ByVal Peso As Double,
                 ByVal Capacidade As Double, ByVal nome As String,
                 ByVal contacto As Integer, ByVal Frigorifico As Boolean, ByVal Fogao As Boolean,
                 ByVal LavaLoicas As Boolean, ByVal WC As Boolean, ByVal DepositoAgua As Boolean,
                 ByVal TV As Boolean, ByVal aquecimento As Boolean, ByVal bateria As Boolean,
                 ByVal tipo As String)
       MyBase.New(nome, modelo, marca, Frigorifico, Fogao, LavaLoicas, WC, DepositoAgua, TV, aquecimento, bateria, ano, Dimensao, Peso, Capacidade, contacto)

       TipoC = tipo

   End Sub

End Class

Edited by ribeiro55
GeSHi

Share this post


Link to post
Share on other sites
flaviofilipe

MyBase.New(nome, modelo, marca, Frigorifico, Fogao, LavaLoicas, WC, DepositoAgua, TV, aquecimento, bateria, ano, Dimensao, Peso, Capacidade, contacto)

O erro apareceme nesta parte do código

e esta e a mensagem que me parece a cadeia "escort" é o modelo do carro que esta declarada como STRING como podem comprovar na classe mas agora aparece-me este erro

Additional information: A conversão da cadeia "escort" para o tipo 'Integer' não é válida.

Edited by flaviofilipe

Share this post


Link to post
Share on other sites
yyajsayy

Olá, aparentemente faz o que o Rui Carlos recomendou. É saudável para o teu código nunca usares carateres especiais no teu ou em qualquer código :thumbsup:

Boa continuação!


"If it don't work the first time, rename it to version 1.0."

http://seguranca-informatica.pt

Share this post


Link to post
Share on other sites
flaviofilipe

Sim eu sei mas o meu professor me ensinou assim e se me pudessem ajudar a detectar onde está o erro do meu projecto para puder finaliza-lo Agradeço Imenso

Share this post


Link to post
Share on other sites
nelsonr

Tens os parametros numa ordem diferente da definida na classe base

Classe base: modelo, marca, ano, dimensao, etc

Nessa linha estas a passar: nome, modelo, marca, frigorifico, etc

Share this post


Link to post
Share on other sites
flaviofilipe

Muita obrigada pela ajuda era mesmo esse o problema agora tenho outro problema tenho uma DataGridview para mostrar os dados que o novo utilizador meteu e eu escrevo os dados num ficheiro e carrego o ficheiro para aparecer da DatagridView quando meto para listar aparece-me este erro "A referência de objecto não foi definida como uma instância de um objecto." Espero uma solução para este problema obrigado

Share this post


Link to post
Share on other sites
nelsonr

Boas,

para tentar ajudar o melhor é colocares parte do código, incluindo a linha que dá erro

Share this post


Link to post
Share on other sites
flaviofilipe
Public Sub CarregarAutocaravanas()
       Dim FSficheiro As New FileStream(Caminhoautocaravanas, FileMode.Open, FileAccess.Read)
       Dim SR As New StreamReader(FSficheiro, System.Text.Encoding.UTF8)

       Dim lerlinha As String ' guarda o registo de cada linha do ficheiro
       Dim p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18 As Integer
       'limpa o array
       Arrayautocaravanas.Clear()
       Do Until SR.Peek = -1
           lerlinha = SR.ReadLine 'le a linha do ficheiro
           p1 = lerlinha.IndexOf(";") + 1
           p2 = lerlinha.IndexOf(";", p1) + 1
           p3 = lerlinha.IndexOf(";", p2) + 1
           p4 = lerlinha.IndexOf(":", p3) + 1
           p5 = lerlinha.IndexOf(";", p4) + 1
           p6 = lerlinha.IndexOf(";", p5) + 1
           p7 = lerlinha.IndexOf(";", p6) + 1
           p8 = lerlinha.IndexOf(";", p7) + 1
           p9 = lerlinha.IndexOf(";", p8) + 1
           p10 = lerlinha.IndexOf(";", p9) + 1
           p11 = lerlinha.IndexOf(";", p10) + 1
           p12 = lerlinha.IndexOf(";", p11) + 1
           p13 = lerlinha.IndexOf(";", p12) + 1
           p14 = lerlinha.IndexOf(";", p13) + 1
           p15 = lerlinha.IndexOf(";", p14) + 1
           p16 = lerlinha.IndexOf(";", 15) + 1
           p17 = lerlinha.IndexOf(";", 16) + 1
           p18 = lerlinha.IndexOf(";", 17) + 1

           'retirar os dados da linha para cada um dos campos

           With Autocaravana
               .NomeV = lerlinha.Substring(0, p1 - 1)
               .ContactoV = lerlinha.Substring(p1, p2 - p1 - 1)
               .AnoV = lerlinha.Substring(p2, p3 - p2 - 1)
               .CapacidadeV = lerlinha.Substring(p3, p4 - p3 - 1)
               .CombustivelA = lerlinha.Substring(p4, p5 - p4 - 1)
               .DimensaoV = lerlinha.Substring(p5, p6 - p5 - 1)
               .MarcaV = lerlinha.Substring(p6, p7 - p6 - 1)
               .MatriculaA = lerlinha.Substring(p7, p8 - p7 - 1)
               .ModeloV = lerlinha.Substring(p8, p9 - p8 - 1)
               .MotorA = lerlinha.Substring(p9, p10 - p9 - 1)
               .PesoV = lerlinha.Substring(p10, p11 - p10 - 1)
               .FrigorificoV = lerlinha.Substring(p11, p12 - p11 - 1)
               .FogaoV = lerlinha.Substring(p12, p13 - p12 - 1)
               .LavaLoicasV = lerlinha.Substring(p13, p14 - p13 - 1)
               .DepositoDeAguaV = lerlinha.Substring(p14, p15 - p14 - 1)
               .tvV = lerlinha.Substring(p15, p16 - p15 - 1)
               .WCV = lerlinha.Substring(p16, p17 - p16 - 1)
               .AquecimentoV = lerlinha.Substring(p17, p18 - p17 - 1)
               .BateriaV = lerlinha.Substring(p18)
           End With
           'adiconar o registo ao array
           Arrayautocaravanas.Add(Autocaravana)


       Loop
       'fechar o ficheiro
       SR.Close()

   End Sub

Tenho este código para carregar o meu ficheiro das auto caravanas  e o erro  "A referência de objecto não foi definida como uma instância de um objecto." aparece-me nesta seguinte parte:
With Autocaravana
               .NomeV = lerlinha.Substring(0, p1 - 1)
               .ContactoV = lerlinha.Substring(p1, p2 - p1 - 1)
               .AnoV = lerlinha.Substring(p2, p3 - p2 - 1)
               .CapacidadeV = lerlinha.Substring(p3, p4 - p3 - 1)
               .CombustivelA = lerlinha.Substring(p4, p5 - p4 - 1)
               .DimensaoV = lerlinha.Substring(p5, p6 - p5 - 1)
               .MarcaV = lerlinha.Substring(p6, p7 - p6 - 1)
               .MatriculaA = lerlinha.Substring(p7, p8 - p7 - 1)
               .ModeloV = lerlinha.Substring(p8, p9 - p8 - 1)
               .MotorA = lerlinha.Substring(p9, p10 - p9 - 1)
               .PesoV = lerlinha.Substring(p10, p11 - p10 - 1)
               .FrigorificoV = lerlinha.Substring(p11, p12 - p11 - 1)
               .FogaoV = lerlinha.Substring(p12, p13 - p12 - 1)
               .LavaLoicasV = lerlinha.Substring(p13, p14 - p13 - 1)
               .DepositoDeAguaV = lerlinha.Substring(p14, p15 - p14 - 1)
               .tvV = lerlinha.Substring(p15, p16 - p15 - 1)
               .WCV = lerlinha.Substring(p16, p17 - p16 - 1)
               .AquecimentoV = lerlinha.Substring(p17, p18 - p17 - 1)
               .BateriaV = lerlinha.Substring(p18)
           End With

 

Share this post


Link to post
Share on other sites
flaviofilipe

o objecto auto caravanas foi criado numa classe mais acima no primeiro código é onde eu crio a classe auto caravanas que esta a herdar uma classe veículos que esta presente em 2 classes caravanas e auto caravanas

Share this post


Link to post
Share on other sites
thoga31

A classe foi definida, sim, mas a instância Autocaravana onde foi declarada, e como foi declarada?


Knowledge is free!

Share this post


Link to post
Share on other sites
nelsonr

Como o thoga31 diz, no código apresentado estás a definir a classe autocaravanas que tem como base a classe Veiculos.

Nesse código que está a dar erro estás a preencher o objecto "Autocaravana", mas não mostras onde tens definido

Deves ter algures algo do tipo "Dim Autocaravana as autocaravanas"

O que te falta é ai antes da linha "With Autocaravana" criares uma instancia do objecto usando "Autocaravana = New autocaravanas(...)", substituindo as reticencias pelos parametros pretendidos

Share this post


Link to post
Share on other sites
flaviofilipe

Bom dia e sim tenho "Dim Autocaravanas as autocaravanas " declarado em cima fiz o que o senhor proposto e Dame este erro :

a parte sublinhada no codigo ficame tudo em azul acrescentei o que senhor dis e ainda continua a não dar

Dim Autocaravana As autocaravanas
Dim ArrayCaravanas As New ArrayList
Dim Arrayautocaravanas As New ArrayList
Dim registo As Integer = -1
Private Caminhoautocaravanas As String = Application.StartupPath &
    "..\..\..\" & "Autocaravanas.txt"
Private Sub frmAutocaravanas_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Mostrar(False)
End Sub
Public Sub CarregarAutocaravanas()
    Dim FSficheiro As New FileStream(Caminhoautocaravanas, FileMode.Open, FileAccess.Read)
    Dim SR As New StreamReader(FSficheiro, System.Text.Encoding.UTF8)
    Dim lerlinha As String ' guarda o registo de cada linha do ficheiro
    Dim p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18 As Integer
    'limpa o array
    Arrayautocaravanas.Clear()
    Do Until SR.Peek = -1
        lerlinha = SR.ReadLine 'le a linha do ficheiro
        p1 = lerlinha.IndexOf(";") + 1
        p2 = lerlinha.IndexOf(";", p1) + 1
        p3 = lerlinha.IndexOf(";", p2) + 1
        p4 = lerlinha.IndexOf(":", p3) + 1
        p5 = lerlinha.IndexOf(";", p4) + 1
        p6 = lerlinha.IndexOf(";", p5) + 1
        p7 = lerlinha.IndexOf(";", p6) + 1
        p8 = lerlinha.IndexOf(";", p7) + 1
        p9 = lerlinha.IndexOf(";", p8) + 1
        p10 = lerlinha.IndexOf(";", p9) + 1
        p11 = lerlinha.IndexOf(";", p10) + 1
        p12 = lerlinha.IndexOf(";", p11) + 1
        p13 = lerlinha.IndexOf(";", p12) + 1
        p14 = lerlinha.IndexOf(";", p13) + 1
        p15 = lerlinha.IndexOf(";", p14) + 1
        p16 = lerlinha.IndexOf(";", 15) + 1
        p17 = lerlinha.IndexOf(";", 16) + 1
        p18 = lerlinha.IndexOf(";", 17) + 1

        'retirar os dados da linha para cada um dos campos
        [u]Autocaravana = New autocaravanas(NomeV, ContactoV, AnoV, CapacidadeV, CombustivelA, DimensaoV, MarcaV,
                                        MatriculaA, ModeloV, MotorA, PesoV, FrigorificoV, FogaoV, LavaLoicasV, DepositoDeAguaV,
                                        tvV, WCV, AquecimentoV, BateriaV)[/u]
        With Autocaravana
            .NomeV = lerlinha.Substring(0, p1 - 1)
            .ContactoV = lerlinha.Substring(p1, p2 - p1 - 1)
            .AnoV = lerlinha.Substring(p2, p3 - p2 - 1)
            .CapacidadeV = lerlinha.Substring(p3, p4 - p3 - 1)
            .CombustivelA = lerlinha.Substring(p4, p5 - p4 - 1)
            .DimensaoV = lerlinha.Substring(p5, p6 - p5 - 1)
            .MarcaV = lerlinha.Substring(p6, p7 - p6 - 1)
            .MatriculaA = lerlinha.Substring(p7, p8 - p7 - 1)
            .ModeloV = lerlinha.Substring(p8, p9 - p8 - 1)
            .MotorA = lerlinha.Substring(p9, p10 - p9 - 1)
            .PesoV = lerlinha.Substring(p10, p11 - p10 - 1)
            .FrigorificoV = lerlinha.Substring(p11, p12 - p11 - 1)
            .FogaoV = lerlinha.Substring(p12, p13 - p12 - 1)
            .LavaLoicasV = lerlinha.Substring(p13, p14 - p13 - 1)
            .DepositoDeAguaV = lerlinha.Substring(p14, p15 - p14 - 1)
            .tvV = lerlinha.Substring(p15, p16 - p15 - 1)
            .WCV = lerlinha.Substring(p16, p17 - p16 - 1)
            .AquecimentoV = lerlinha.Substring(p17, p18 - p17 - 1)
            .BateriaV = lerlinha.Substring(p18)
        End With
        'adiconar o registo ao array
        Arrayautocaravanas.Add(Autocaravana)

    Loop
    'fechar o ficheiro
    SR.Close()
End Sub

Edited by ribeiro55

Share this post


Link to post
Share on other sites
nelsonr

Esquece a parte que tens ai do With Autocaravana e usa só algo assim:

'
Autocaravana = New autocaravanas( _
  lerlinha.Substring(0, p1 - 1), _
  lerlinha.Substring(p1, p2 - p1 - 1), _
  ...
  )

Share this post


Link to post
Share on other sites
Guilherme Santos


	 [u]Autocaravana = New autocaravanas(NomeV, ContactoV, AnoV, CapacidadeV, CombustivelA, DimensaoV, MarcaV,
									 MatriculaA, ModeloV, MotorA, PesoV, FrigorificoV, FogaoV, LavaLoicasV, DepositoDeAguaV,
									 tvV, WCV, AquecimentoV, BateriaV)[/u]

Você está instanciando a classe com as variáveis NomeV, ContactoV,etc...Você declara estas variáveis?Se sim,elas podem ser acessadas por este método?

E poderia dizer qual mensagem de erro aparece na error list?

Edited by Guilherme Santos

Share this post


Link to post
Share on other sites
flaviofilipe

boa tarde sim estas variáveis estão declaradas num classe e eu acedo a classe para conseguir aceder ás variáveis

o erro que me da e o seguinte :A referência de objecto não foi definida como uma instância de um objecto.

Nelsonr eu já meti dessa forma como o senhor diz e não resulta

ele escreve-me o ficheiro desta forma

ele guarda-me no ficheiro o problema é que ele não me consegue ler no ficheiro aparece-me aquele erro

trtre;324324324;34324;3;Gasolina ;432432432432;ewtw;432432;rewrew;4324;343244;False;False;False;False;False;False;False;False

Edited by flaviofilipe

Share this post


Link to post
Share on other sites
flaviofilipe

ele está a gravar bem não me lê o ficheiro e erro que me da aponta para o procedimento que tenho para me ler o ficheiro eu fiz eliminei o "WITH " e meti da sua forma mas quando ias acrestar o NomeV , DimensãoV aparecia-me em azul sublinhado

Edited by flaviofilipe

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.