Bruno Neves Posted May 8, 2013 at 10:26 AM Report #506232 Posted May 8, 2013 at 10:26 AM (edited) Boas pessoal, tou a estagiar numa empresa e pediram-me para actualizar um software de backups feito em vb 2006 e nao percebo nada de vb 2006. Vou por aqui uma function que me ta a dar cabo da cabeça a ver se alguem que peceba de vb 2006 me possa ajudar: Public Function RotFicheiros(sLocFich As String, Funcao As RotinaDir, Optional sDestino As String, Optional SubstituirFicheriosExistentes As Boolean = True) As Boolean Dim fpath As New FileSystemObject On Error GoTo ErrO Select Case Funcao Case RDDEL If fpath.FileExists(sLocFich) Then fpath.DeleteFile(sLocFich), True <- Erro! (End of Statement expected) Case RDEXISTE If fpath.FileExists(sLocFich) Then RotFicheiros = True Case RDCOPIAR If fpath.FileExists(sLocFich) And fpath.FolderExists(sDestino) Then fpath.CopyFile(sLocFich, sDestino, SubstituirFicheriosExistentes) Else MsgBox("Erro! Directorio de destino nao encontrado.") End If End Select Exit Function ErrO: MsgBox(Err.Number & " " & Err.Description, vbCritical + vbOKOnly, "Backup") grava_log("ERRO NO BACKUP: Backup não executado. - ERRO: " & Err.Number & " - " & Err.Description) MsgBox("Backup não efectuado.", vbCritical + vbOKOnly, "PBS") End Function eu como nao percebo nada de vb 2006 nao sei como converter isto direito de modo a que fique a correr, o erro é na virgula se eu puser a virgula da-me o erro que mostrei em cima, se substituir a virgula por um igual da-me um erro em: If fpath.FileExists(sLocFich) Then fpath.DeleteFile(sLocFich) = True <- Erro! (Exp<b></b>ression is value and therefore cannot be the target of an assignment.) espero que alguem me possa ajudar :S Edited May 8, 2013 at 11:06 AM by ribeiro55
nelsonr Posted May 8, 2013 at 10:32 AM Report #506233 Posted May 8, 2013 at 10:32 AM Boas Bruno, apesar de não programar em VB.NET, julgo que o correto deve ser: If fpath.FileExists(sLocFich) Then fpath.DeleteFile(sLocFich, True)
Bruno Neves Posted May 8, 2013 at 10:56 AM Author Report #506236 Posted May 8, 2013 at 10:56 AM muito obrigado Nelson, funcionou. 🙂 mas mais erros irão me aparecer infelizmente... Tou a converter um projecto (Sistema de Backup) inteiro de vb 2006 para vb 2010... poderei vir a precisar de mais ajuda :S
nelsonr Posted May 8, 2013 at 11:13 AM Report #506238 Posted May 8, 2013 at 11:13 AM Quando dizes vb2006 referes-te ao VB6? Algum código podia ser melhorado, passando a utilizar as bibliotecas do .net (ex: System.IO.File em vez desse FileSystemObject)
Bruno Neves Posted May 8, 2013 at 11:20 AM Author Report #506240 Posted May 8, 2013 at 11:20 AM Public Function RotFicheiros(ByVal sLocFich As String, Funcao As RotinaDir, Optional sDestino As String, Optional SubstituirFicheriosExistentes As Boolean = True) As Boolean agora dava-me erro aqui por causa da virgula entre String e Optinal -.- Optional sDestino As String , Optional SubstituirFicheriosExistentes As Boolean Alguem sabe porque? o erro é (Optinal parameters must specify a default value) Eu tive a pesquisar e pus Optional sDestino As String = "Default Value" e ja nao da erro. Quando dizes vb2006 referes-te ao VB6? Algum código podia ser melhorado, passando a utilizar as bibliotecas do .net (ex: System.IO.File em vez desse FileSystemObject) Sim Nelson vb6 E como ponho o codigo com System.IO.File? alem de ter de fazer o Imports System.IO
nelsonr Posted May 8, 2013 at 11:37 AM Report #506242 Posted May 8, 2013 at 11:37 AM Eu tive a pesquisar e pus Optional sDestino As String = "Default Value" e ja nao da erro. Normalmente utiliza-se algo do tipo: Optional sDestino As String = "" E como ponho o codigo com System.IO.File?alem de ter de fazer o Imports System.IO O System.IO tem bastantes funções para trabalhar com ficheiros, incluindo as que estão a ser utilizadas na função convertida. Mas se não te sentes à vontade com vb.net e se está a funcionar, é melhor deixares estar como está e continuares a converter o restante código. Talvez depois de terminada a conversão e se tiveres tempo, logo tentas atualizar aos poucos.
Bruno Neves Posted May 8, 2013 at 11:53 AM Author Report #506245 Posted May 8, 2013 at 11:53 AM Normalmente utiliza-se algo do tipo: Optional sDestino As String = "" O System.IO tem bastantes funções para trabalhar com ficheiros, incluindo as que estão a ser utilizadas na função convertida. Mas se não te sentes à vontade com vb.net e se está a funcionar, é melhor deixares estar como está e continuares a converter o restante código. Talvez depois de terminada a conversão e se tiveres tempo, logo tentas atualizar aos poucos. Ainda estou a começar a programar, logo nao é facil para mim. ainda conheço pouca coisa :S Deste-me uma enorme ajuda. Ja só faltam converter 4 modulos, 3 form's e algumas classes xD
Bruno Neves Posted May 8, 2013 at 01:59 PM Author Report #506260 Posted May 8, 2013 at 01:59 PM Alguem me pode traduzir as seguintes function's de vb06 para vb 2010? sff 'ler ficheiro ini Function getini(ByVal Filename$, ByVal Sect$, ByVal KeyName$, ByVal Default$) Const nSize = 10240 Dim a As String * nSize Dim p% p = GetPrivateProfileString(Sect, KeyName, Default, a, nSize, Filename) getini = Left$(a, p) End Function Function GetUserName() As String Dim UserName As String * 255 Call GetUserNameA(UserName, 255) GetUserName = Left$(UserName, InStr(UserName, Chr(0)) - 1) End Function Function GetComputerName() As String Dim UserName As String * 255 Call GetComputerNameA(UserName, 255) GetComputerName = Left$(UserName, InStr(UserName, Chr(0)) - 1) End Function :s
nelsonr Posted May 9, 2013 at 08:12 AM Report #506346 Posted May 9, 2013 at 08:12 AM Boas Bruno essas funções estão a chamar funções externas que não estão declaradas (GetPrivateProfileString, GetUserNameA e GetComputerNameA). Verifica aqui alguns exemplos de como podes declarar: GetPrivateProfileString: http://stackoverflow.com/questions/3211188/getprivateprofilestring-returns-empty-string-despite-having-a-default GetUserNameA: http://www.developerfusion.com/code/4409/get-current-username-in-vbnet/ GetComputerNameA: http://www.developmentnow.com/g/38_2003_12_0_0_231770/GetComputerNameA-does-not-work-in-VB-Dot-Net.htm
Bruno Neves Posted May 9, 2013 at 10:22 AM Author Report #506368 Posted May 9, 2013 at 10:22 AM Muito obrigado Nelson 🙂 uma duvida quanto à Grid do vb06 : no projecto da empresa tenho a seguinte Grid: http://img341.imageshack.us/img341/1295/gridvb06.png mas no vb 2010, nao ha uma grid no toolbox como esta, apenas consegui criar algu parecido com uma listview. mas depois para passar o codigo da grid do vb06 para vb 2010 dame erro em tudo que tenha Grid. Private Sub cmd_directorio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_directorio.Click Dim i As Integer Dim sDirectorio As String sDirectorio = Application.ExecutablePath Do Until sDirectorio = "" sDirectorio = "" 'Localização do Directório sDirectorio = sProcuraDirectorio("Diretório de arquivos a efectuar Backup") 'se algum foi escolhido...6 If sDirectorio = "" Then Exit Sub If Trim(sDirectorio) = "" Then Exit Sub For i = 1 To Grid.Rows - 1 If Trim(Grid.TextMatrix(i, 1)) = sDirectorio Then MsgBox("Localização já inserida!", vbExclamation + vbOKOnly) Exit Sub End If Next Grid.Rows = Grid.Rows + 1 Grid.TextMatrix(Grid.Rows - 1, 1) = sDirectorio Grid.Cell(flexcpChecked, Grid.Rows - 1, 2) = ckInclSubPastas.Value Loop sDirectorio = "" End Sub (este é o botão "Adicionar Directorio" do form ) Alguma sugestao do que eu deva fazer?
nelsonr Posted May 9, 2013 at 11:03 AM Report #506375 Posted May 9, 2013 at 11:03 AM Pelo nome, esse grelha é um componente externo da Flex (VSFlexGrid). É suposto ser uma grelha normal, ou faz alguma coisa de especial? Em VB.NET julgo que podes usar a DataGridView
Bruno Neves Posted May 9, 2013 at 11:16 AM Author Report #506381 Posted May 9, 2013 at 11:16 AM Sim, é isso (VSFlexGrid). a grelha é normal, vai conter os caminhos dos directórios que utilizador pretende efectuar o backup e uma coluna (S.P) para o utilizador escolher que quer tambem as sub pastas (com checkbox). http://img221.imageshack.us/img221/1740/grelha.png algu deste genero... mas nada ligado a base de dados por isso nao da para ser com DataGridView.
nelsonr Posted May 9, 2013 at 11:24 AM Report #506383 Posted May 9, 2013 at 11:24 AM mas nada ligado a base de dados por isso nao da para ser com DataGridView. A DataGridView não tem de estar associada a uma base de dados. Vê aqui um exemplo de como preencher: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now