0

hey i in the middle of programming, but suddenly i noticed that my variable are not detected. so my syntax refrence became different, like i cant use A.User.Async in other function. this is my code, i want to make variable "A as new dropboxclient (storedaccestoken) " as public variable but when i start it storedaccestoken is null so the flow is broke. this code is the running version from my application, when i try to make variable "A" to become public "storedaccestoken" always come back with null and my application wont start. please help me find the solution

Imports System.IO
Imports System.Text
Imports System.Net
Imports login.Login
Imports Dropbox
Imports Dropbox.Api
Public Class menuutama

    Dim IList As Object
    Dim sourcepath As String
    Dim FILE_NAME As String
    Dim storedaccesstoken As String
    Dim root
    Dim folder



    Sub New()
        InitializeComponent()
        sourcepath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        FILE_NAME = sourcepath & "\myaccestoken.txt"
        root = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
    folder = root & "\Dropbox"



End Sub


    Private Sub menuutama_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        storedaccesstoken = My.Computer.FileSystem.ReadAllText(FILE_NAME)

        If Not FileLen(FILE_NAME) = 0 Then

        Dim A As New DropboxClient(storedaccesstoken)
        Dim info = A.Users.GetCurrentAccountAsync
            akun.Text = "Name : " & info.Result.Name.DisplayName & vbCrLf
            akun.Text += "Email : " & info.Result.Email & vbCrLf
            Dim Space = A.Users.GetSpaceUsageAsync

            ruangkosong.Text = "Used Spaces : " & filesize(Space.Result.Used) & " From " & filesize(Space.Result.Allocation.AsIndividual.Value.Allocated)

            For Each File In A.Files.ListFolderAsync(String.Empty).Result.Entries()
                Dim NewItem As New ListViewItem
                NewItem.Text = Path.GetFileName(File.Name)
                If File.IsFolder Then
                    NewItem.SubItems.Add("Directory")
                    NewItem.ImageIndex = 1
                Else
                    NewItem.SubItems.Add("File")
                    NewItem.SubItems.Add(filesize(File.AsFile.Size))
                    NewItem.ImageIndex = 2
                End If
                listfile.Items.Add(NewItem)
            Next

        End If
    End Sub
    'membuat fungsi filesize dimana mengambil ukuran dari file yang nanti kita pilih
    Private Function filesize(ByVal size As Double) As String
        Dim type As String() = {"B", "KB", "MB", "GB"}
        Dim sizedouble As Double = size
        Dim CSA As Integer = 0
        While sizedouble >= 1024 AndAlso CSA + 1 < type.Length
            CSA += 1
            sizedouble = sizedouble / 1024
        End While
        Return [String].Format("{0:0.##} {1}", sizedouble, type(CSA))
    End Function

    Private Sub UploadToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles UploadToolStripMenuItem1.Click
        Using FolderBrowserDialog As New FolderBrowserDialog
            If FolderBrowserDialog.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
            Dim alamat As String = FolderBrowserDialog.SelectedPath
            Dim nama As String = New DirectoryInfo(alamat).Name
            Dim FileCount As Integer = 0
            My.Computer.FileSystem.CopyDirectory(alamat, folder & "/" + nama, True)
            MsgBox("Successfully Uploaded")
        End Using
        listfile.Items.Clear()
        For Each File In A.Files.ListFolderAsync(String.Empty).Result.Entries()
            Dim NewItem As New ListViewItem
            NewItem.Text = Path.GetFileName(File.Name)
            If File.IsFolder Then
                NewItem.SubItems.Add("Directory")
                NewItem.ImageIndex = 1
            Else
                NewItem.SubItems.Add("File")
                NewItem.SubItems.Add(filesize(File.AsFile.Size))
                NewItem.ImageIndex = 2
            End If
            listfile.Items.Add(NewItem)
        Next
    End Sub

    Private Sub listfile_DoubleClick(sender As Object, e As EventArgs) Handles listfile.DoubleClick

        For Each C As ListViewItem In listfile.SelectedItems
            On Error Resume Next
            If C.Text = "..." Then

                listfile.Items.Clear()

                If Not direktori.Text.Substring(0, direktori.Text.LastIndexOf("/")) = Nothing Then
                    Dim NewItem As New ListViewItem
                    NewItem.Text = "..."
                    NewItem.ImageIndex = 2
                    listfile.Items.Add(NewItem)
                End If

                direktori.Text = direktori.Text.Substring(0, direktori.Text.LastIndexOf("/"))

                For Each File In A.Files.ListFolderAsync(direktori.Text).Result.Entries
                    Dim NewItem As New ListViewItem
                    NewItem.Text = Path.GetFileName(File.Name)
                    If File.IsFolder Then
                        NewItem.SubItems.Add("Directory")
                        NewItem.ImageIndex = 0
                    Else
                        NewItem.SubItems.Add("File")
                        NewItem.SubItems.Add(filesize(File.AsFile.Size))
                        NewItem.ImageIndex = 1
                    End If
                    listfile.Items.Add(NewItem)
                Next

            Else

                listfile.Items.Clear()

                Dim back As New ListViewItem
                back.Text = "..."
                back.ImageIndex = 2
                listfile.Items.Add(back)

                direktori.Text += "/" & C.Text

                For Each File In A.Files.ListFolderAsync(direktori.Text).Result.Entries
                    Dim NewItem As New ListViewItem
                    NewItem.Text = Path.GetFileName(File.Name)
                    If File.IsFolder Then
                        NewItem.SubItems.Add("Directory")
                        NewItem.ImageIndex = 0
                    Else
                        NewItem.SubItems.Add("File")
                        NewItem.SubItems.Add(filesize(File.AsFile.Size))
                        NewItem.ImageIndex = 1
                    End If
                    listfile.Items.Add(NewItem)
                Next

            End If

        Next

    End Sub
    Private Sub LoginToolStripMenuItem_Click(sender As Object, e As EventArgs)

    End Sub

    Private Sub CountFiles(InFolder As String, ByRef Result As Integer)
        Result += IO.Directory.GetFiles(InFolder).Count
        For Each f As String In IO.Directory.GetDirectories(InFolder)
            CountFiles(f, Result)
        Next
    End Sub


    Private Sub LogoutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogoutToolStripMenuItem.Click

        Dim wHeader As WebHeaderCollection = New WebHeaderCollection()
        Dim wProxy As IWebProxy = WebRequest.GetSystemWebProxy()
        wProxy.Credentials = System.Net.CredentialCache.DefaultCredentials

        wHeader.Clear()
        wHeader.Add("Authorization: Bearer " + storedaccesstoken)
        Dim sUrl As String = "https://api.dropboxapi.com/2/auth/token/revoke"

        Dim wRequest As HttpWebRequest = DirectCast(System.Net.HttpWebRequest.Create(sUrl), HttpWebRequest)

        wRequest.Headers = wHeader
        wRequest.Method = "POST"
        wRequest.Proxy = wProxy


        Dim wResponse As HttpWebResponse = DirectCast(wRequest.GetResponse(), HttpWebResponse)

        Dim sResponse As String = ""

        Using srRead As New StreamReader(wResponse.GetResponseStream())
            sResponse = srRead.ReadToEnd()
        End Using
        If System.IO.File.Exists(FILE_NAME) = True Then
            System.IO.File.Delete(FILE_NAME)
        End If
        Dim login As New Login
        login.Show()
        Me.Close()
    End Sub

    Private Sub CobaToolStripMenuItem_Click(sender As Object, e As EventArgs)

        Using FolderBrowserDialog As New FolderBrowserDialog
            If FolderBrowserDialog.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
            Dim alamat As String = FolderBrowserDialog.SelectedPath
            Dim nama As String = New DirectoryInfo(alamat).Name
            Dim FileCount As Integer = 0
            My.Computer.FileSystem.CopyDirectory(alamat, folder & "/" + nama, True)
        End Using
    End Sub



    Private Sub GetShareLinkToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GetShareLinkToolStripMenuItem.Click
        For Each C As ListViewItem In listfile.SelectedItems

            Dim GetLink = A.Sharing.CreateSharedLinkAsync(direktori.Text & "/" & C.Text)
            MsgBox(GetLink.Result.Url)
            Dim Path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
            Dim FILE_NAME = Path & "\link.txt"

            If System.IO.File.Exists(FILE_NAME) = False Then
                System.IO.File.Create(FILE_NAME).Dispose()
            End If

            Dim objWriter As New System.IO.StreamWriter(FILE_NAME, False)
            objWriter.Write(GetLink.Result.Url.ToString)
            objWriter.Close()


        Next
    End Sub

    Private Sub DeleteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DeleteToolStripMenuItem.Click
        For Each C As ListViewItem In listfile.SelectedItems
            Dim Del = A.Files.DeleteAsync(direktori.Text & "/" & C.Text)
            C.Remove()
            MsgBox("Successully Deleted")
        Next
    End Sub

    Private Sub UploadToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles UploadToolStripMenuItem2.Click
        Dim C As New OpenFileDialog
        C.Title = "Choose File"
        C.Filter = "All Files (*.*)|*.*"
        If C.ShowDialog = Windows.Forms.DialogResult.OK Then
            UploadFile(C.FileName)
        End If
    End Sub


    Async Sub UploadFile(Filepath As String)
        Dim Up = Await A.Files.UploadAsync(direktori.Text & "/" & Path.GetFileName(Filepath), body:=(New FileStream(Filepath, FileMode.Open, FileAccess.Read)))

        Dim NewItem As New ListViewItem
        NewItem.Text = Path.GetFileName(Up.Name)
        NewItem.SubItems.Add("File")
        NewItem.SubItems.Add(filesize(Up.Size))
        NewItem.ImageIndex = 1
        listfile.Items.Add(NewItem)

        MsgBox("Successfully Uploaded")

    End Sub

    Private Sub DownloadToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles DownloadToolStripMenuItem2.Click
        For Each D As ListViewItem In listfile.SelectedItems
            Dim C As New SaveFileDialog
            C.Title = " Save File To"
            C.Filter = "All Files (*.*)|*.*"
            C.FileName = Path.GetFileName(D.Text)
            If C.ShowDialog = Windows.Forms.DialogResult.OK Then
                DownloadFile(D.Text, C.FileName)
            End If
        Next
    End Sub

    Async Sub DownloadFile(Filepath As String, Final As String)
        Dim Down = Await A.Files.DownloadAsync(direktori.Text & "/" & Path.GetFileName(Filepath))
        File.WriteAllBytes(Final, Await Down.GetContentAsByteArrayAsync)
        MsgBox("Successfully Downloaded")
    End Sub
End Class
  • 1
    `Public` doesnt affect Scope - it is an access qualifier. A is ***declared*** inside the load method so that is where it exists. Declaring and initializing are two different things - `Dim` and `New` dont have to be used in the same line on the same variable – Ňɏssa Pøngjǣrdenlarp Nov 14 '16 at 01:13
  • so i should type this ? , ' A as new dropboxclient (storedaccestoke)' then i want to use it in other private sub A is not detected – Andru Deva Lukito Nov 14 '16 at 01:30
  • i tried it but...., its protection level make it imposibble for another private sub to call – Andru Deva Lukito Nov 14 '16 at 01:35
  • Study the link. A key concept in the comment was **where** it is declared and that cant come thru in a comment. Your post is confusing because there is *much* more code than needed and it seems to be from different classes etc. `Private A As dropboxclient` **declares** the variable then later `A = New dropboxclient()` initializes/creates the instance – Ňɏssa Pøngjǣrdenlarp Nov 14 '16 at 01:36

0 Answers0