• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Visual Basic help here please!

Status
Not open for further replies.

Relix

he's Virgin Tight™
THIS IS DONE WITH! PROCEED TO NEWER POSTS FOR OTHER CASES! =P
HELP HERE NOW!http://www.neogaf.com/forum/showpost.php?p=33403845&postcount=73


OLD
http://www.neogaf.com/forum/showpost.php?p=32112694&postcount=67
I fought hard to avoid making one of these this semester, but as part of my programming course I am to do a final program that has to do the following:

1. Define a structure
2. Define an array equal to this structure (aka... a matrix).

I am ok until here...

The third requirement is forcing me to Open a text file and read from it. Cool, I know how to do that process... NOW.....

"Read the rates data from a text file and store it in
the array.
This code must be executed only once
during program execution.

1)

Use an Open File Dialog control to get the name
and location of the text file."

I have NO idea how to do this. Text book doesn't have any solid examples and Google is netting me some hard examples. This is the Sub-procedure code so far:

Dim inputFile As StreamReader
Dim strFilename As String
Dim test As Integer


With ofdOpen
.Filter = "Text Files (.txt)|*.txt|All Files (*.*|*.*"
.Title = "Select File to Open"

If ofdOpen.ShowDialog = Windows.Forms.DialogResult.OK Then
strFilename = ofdOpen.FileName

Try
inputFile = File.OpenText(strFilename)



test = inputFile.ReadToEnd

inputFile.Close()

Catch
MessageBox.Show("No file")




End Try


txttest.Text = CStr(test)

End If

End With

The last part is basically me testing to see if the string was passed. I am stuck. Any tips?

EDIT: Erm I got it to read the file. :lol :lol Code was fine, I was just trying to pass the string as an Integer and it didn't work. Writing numbers the code worked.

Now my question would primarily be.... how do I read each line of code and add each line of the code to the arrays? I know you can for example separate with commas... but how would I go for the program to read it?


OLD
 

Relix

he's Virgin Tight™
user_nat said:
What would this text file contain?

Just numbers, its a program to get tax amounts and stuff like that, so for example I have this:

000000 –10,000 , .00 ,.00

The first number being the income from 0 to 10,000 and the next two the percentage rates of either being single or married, which bot are 00 in this case. The program needs to read the text file with this info and save all the info into an array, where the program will then grab the info and execute/process the numbers.

bbyybb said:
There are many examples of how to load a file line by line into an array. Quite simple really.

For example, http://www.dreamincode.net/forums/topic/111336-read-file-line-by-line-to-array-list/

That second code is what I was actually looking for. Its what I knew but didn't really have a grasp on how to use it.
 

Sarye

Member
Essentially you are just doing a while loop calling reader.ReadLine(), how you piece it all together is up to you. reader.Peek() will check the line without going to the next line.

you'll need to parse the string to an integer if you have an int array or need to do any sort of calculation. throw an error if the format is incorrect.

edit: there should be a standard of how the file is laid out. Is it all separated by commas? or is all the numbers in it's own line?
 

Relix

he's Virgin Tight™
Sarye said:
Essentially you are just doing a while loop calling reader.ReadLine(), how you piece it all together is up to you. reader.Peek() will check the line without going to the next line.

you'll need to parse the string to an integer if you have an int array or need to do any sort of calculation. throw an error if the format is incorrect.

edit: there should be a standard of how the file is laid out. Is it all separated by commas? or is all the numbers in it's own line?

Yes, for example:

0,10000,.00,.00

That way first number goes to one of the arrays, next one to another, etc. I am having problems with that other code either... I am so stuck :lol :lol
 

Sarye

Member
Relix said:
Yes, for example:

0,10000,.00,.00

That way first number goes to one of the arrays, next one to another, etc. I am having problems with that other code either... I am so stuck :lol :lol

what's your error?

all you need to do is read the line into a string which you have already done.

then you manipulate the string to load it into the int array.

There are a few ways you can go about this. are you using .NET? You can use the Split method which automatically splits the string and stores it as a string array. I think the syntax is

Dim strArray[] = new strVal.Split(',')

(I'm more familiar with C# so forgive me if this syntax is incorrect)

There are many Methods you could use to manipulate the string if you want to do it differently so check out the library with intellisense to find what you need.
 

Relix

he's Virgin Tight™
Right now I am using this code:

With ofdOpen
.Filter = "Text Files (.txt)|*.txt|All Files (*.*|*.*"
.Title = "Select File to Open"

If ofdOpen.ShowDialog = Windows.Forms.DialogResult.OK Then
strFilename = ofdOpen.FileName
inputFile = File.OpenText(strFilename)
For intCount = 0 To (inputFile.Peek() - 1)
test(intCount) = CInt(inputFile.ReadLine())
Next
inputFile.Close()
Try

Getting an exception error at the moment. Still, as you said, I need to use the commas to split so I need to add that to this code, but first I want to get it running the "normal" way. I honestly see nothing wrong with the code but VB just throws an exception error. This is THE key... after I have this information in the arrays then the functions and other loops are easy as pie.
 

Chris R

Member
You put your try/catch block around your io stuff, not after it. Also use a while loop instead of a for loop.

Finally, why is your class over vb and not say vb.net?
 

Sarye

Member
Relix said:
Right now I am using this code:

With ofdOpen
.Filter = "Text Files (.txt)|*.txt|All Files (*.*|*.*"
.Title = "Select File to Open"

If ofdOpen.ShowDialog = Windows.Forms.DialogResult.OK Then
strFilename = ofdOpen.FileName
inputFile = File.OpenText(strFilename)
For intCount = 0 To (inputFile.Peek() - 1)
test(intCount) = CInt(inputFile.ReadLine())
Next
inputFile.Close()
Try

Getting an exception error at the moment. Still, as you said, I need to use the commas to split so I need to add that to this code, but first I want to get it running the "normal" way. I honestly see nothing wrong with the code but VB just throws an exception error. This is THE key... after I have this information in the arrays then the functions and other loops are easy as pie.

Your try should be around the thing you're trying to do (such as reading a file) also you're getting an error because you are trying to convert a string to an integer. If the string is a number then great, it'll work. but essentially you are trying to convert the string, "1000,0,.00,.00" to an integer and obviously this is not a number.

The "normal" way is the way I mentioned. You read the line and store it as a string FIRST. You don't convert it to an integer while you're reading the line because you need to manipulate the string before you do.

Do you know how to debug? step through your code, it should tell you where it fails
 

Relix

he's Virgin Tight™
rhfb said:
You put your try/catch block around your io stuff, not after it. Also use a while loop instead of a for loop.

Finally, why is your class over vb and not say vb.net?

I have no idea why try was out of the block :lol :lol

Will try your suggestion. By the way... it IS VB.NET... I just skipped that in the topic =P

Sarye said:
Your try should be around the thing you're trying to do (such as reading a file) also you're getting an error because you are trying to convert a string to an integer. If the string is a number then great, it'll work. but essentially you are trying to convert the string, "1000,0,.00,.00" to an integer and obviously this is not a number.

The "normal" way is the way I mentioned. You read the line and store it as a string FIRST. You don't convert it to an integer while you're reading the line because you need to manipulate the string before you do.

Do you know how to debug? step through your code, it should tell you where it fails

Yeah I am debugging now. Seeing where the fuck its crashing and well... as you said, its a string not an integer :lol I constantly forget that shit while coding
 

Relix

he's Virgin Tight™
Ok after some fiddling I am now In..

If ofdOpen.ShowDialog = Windows.Forms.DialogResult.OK Then
strFilename = ofdOpen.FileName
Dim strSequencial() As String = File.ReadAllLines(strFilename)

For i As Integer = 0 To strSequencial.Count - 1

Dim test() As String = strSequencial(i).Split(",")
strSequencial = test(0)


Code seems more akin to what i need, but VB is still calling an error. Oh man am I having a bitching problem here :lol
 

Relix

he's Virgin Tight™
Sorry for triple post :lol :lol

Dim strCustomerLine As String
Dim chrDelimiter() As Char = {CChar(",")}

Dim strFields() As String

Dim srdCurrent As System.IO.StreamReader
If ofdOpen.ShowDialog = Windows.Forms.DialogResult.OK Then
srdCurrent = New System.IO.StreamReader(ofdOpen.FileName)

srdCurrent = System.IO.File.OpenText(ofdOpen.FileName)
strCustomerLine = srdCurrent.ReadLine

Do Until strCustomerLine = Nothing

strFields = strCustomerLine.Split(chrDelimiter)

strCustomerLine = srdCurrent.ReadLine

Loop

srdCurrent.Close()
End If

Ok, textbook + my smarts = win! =O! Now I am reading the files and putting them into arrays, tested it with a message box showing me the data.

NOW!!

I need to save the data into different arrays (which are inside a structure). Like:

Public Structure sRates
Public intLowerLimit As Integer
Public intUpperLimit As Integer
Public dblSingleRat As Double
Public dblMarriedRa As Double
End Structure

and I have an array listed as taxpayers = sRates... etc etc....

I declare them as taxpayers(0).intLowerLimit... etc etc etc....

In that code I am using, how would I go to adding each value to each, single one of these arrays? Like it reads the 10000, then the .00 it puts in another array? I know it must be similar to what I have but I just can't get it.

This thing is killing me :lol
 

Sarye

Member
deleted, didn't get your most recent post

Can you post your exact assignment. All of the more recent info would have been critical for me to help you.

or PM me if you don't want to post it here.
 

Relix

he's Virgin Tight™
Sure...

a) Define a structure
b) Define an array equal to that structure
c) Read the rates data from a text file and store it in the array. This code must be executed only once during program execution.

That's basically the part where I am stuck, C. From there on its just validating, loops, etc which I can easily do. But this part has me completely stuck. Huge thanks for taking time to help me, really appreciated :D

I am supposed to calculate net income and the applicable rate for that income and output it.
 

J-Rod

Member
Can you post your definition of the structure, and your declaration of an array of that structure?

Structure mystructurename
dim a as integer
dim b as decimal
dim c as string
end structure

dim mystructurearray() as nystructurename

dim mystreamreader as new system.io.streamreader(*file path and name*)

dim mycount as integer =0

do while mystreamreader.peek <> -1
dim line as string = mystreamreader.readline()
dim values() as string = split(line, ",")
mystructurearray(mycount).a = values(0)
mystructyrearray(mycount).b = values(1)
mystructyrearray.(mycount).c = values(2)
mycount += 1
loop
 

Sarye

Member
ah so it is exactly like you described in the OP. Alright then.

essentially what you are doing is declaring a structure array with the size of the number of lines in the text file.

I don't think it's a structure of arrays but an array of a structure. If that makes any sense.

So for example if you defined your structure as:
Public Structure sRates
Public intLowerLimit As Integer
Public intUpperLimit As Integer
Public dblSingleRat As Double
Public dblMarriedRa As Double
End Structure


then you would declare your structure array like this:
Dim myRates() as New sRates

Then you would loop through your line, split the value, and store it into the structure array.

ex:
To access the object inside the structure you do this,
myRates.intLowerLimit
myRate.dblSingleRat

but since it is an array, you would access it like this,
myRates(0).intLowerLimit
myRate(0).dblSingleRat

is that enough of a clue to help you move forward?

edit: also make sure you convert the string to it's appropriate object. for int, use Integer.Parse or CInt. for double, use Double.Parse.

making this note now because if you convert the string as an int that was supposed to be a double, it'll compile, but for the purpose of the assignment it'll be incorrect. ie. "0.05" will be 0.
 

Relix

he's Virgin Tight™
Man, the help is really, REALLY appreciated. GAF's awesome :lol

I based what I wrote on J-Rod's code and Sarye's tip, and ended up with this:

Public Structure sRates
Public intLowerLimit As Integer
Public intUpperLimit As Integer
Public dblSingleRat As Double
Public dblMarriedRa As Double
End Structure

Public taxpayers(intMaxSubscript) As sRates


Public Sub OpenFile()


Dim inputFile As StreamReader
Dim i = 0

With ofdOpen
.Filter = "Text Files *.txt|*.txt|All Files *.*|*.*"
.Title = "Select File to Open"

If .ShowDialog = Windows.Forms.DialogResult.OK Then
inputFile = File.OpenText(.FileName)
End If

Do While inputFile.Peek <> -1
Dim line As String = inputFile.ReadLine()
Dim values() As String = Split(line, ",")
taxpayers(i).intLowerLimit = CInt(values(0))
taxpayers(1).intUpperLimit = CInt(values(1))
taxpayers(i).dblSingleRat = values(2)
taxpayers(i).dblMarriedRa = values(3)


i = +1
Loop

End With

MessageBox.Show(taxpayers(1).intLowerLimit)

Code compiles well. The final message box is just me testing to see if it grabbed the numbers. And... IT DID.... but I have a bit of an issue. That number should be 10001 yet when executed it shows as 50001.

This is the test file:
0000,10000,00,00
10001,20000,06,05
20001,50000,09,08
50001,200000,08,09
200001,500000,15,12
500001,9999999,30,25

I am switching the code a bit but nothing yet appears correctly. At least I can now read the files well and put them in the arrays, so absolute thanks to everyone. :D
 

Sarye

Member
Relix said:
taxpayers(i).intLowerLimit = CInt(values(0))
taxpayers(1).intUpperLimit = CInt(values(1))
taxpayers(i).dblSingleRat = values(2)
taxpayers(i).dblMarriedRa = values(3)

That's your first issue.

As for why the value is 50001 and not 10001, you are not really incrementing i. the correct syntax is i += 1 or i = i + 1
 

Smokey

Member
Good shit Sarye.

I feel ya Relix. I had to program assignments to do for a final of mine as well and was sooooo close to posting here for help. I probably should've, as I only did 1 out of the 2 assignments on the final:lol
 

Relix

he's Virgin Tight™
Sarye said:
That's your first issue.

As for why the value is 50001 and not 10001, you are not really incrementing i. the correct syntax is i += 1 or i = i + 1

Oh my god two ridiculous mistakes. I fixed the 1 but absolutely missed the +1. I hate when VB auto corrects shit for you and you don't notice shit :lol

With those stupid mistakes fixed... the program runs. Rest should be smooth sailing. THANKS A LOT GUYS. Really!!!
 

Relix

he's Virgin Tight™
Hehe... easy my ass. I am stuck in the final loop of the project... this is the code:

Dim dblAmount As Double
Dim i = 0



Do Until i = intMaxSubscript
If dblIncome >= taxpayers(i).intLowerLimit And dblIncome <= taxpayers(i).intUpperLimit Then
If radMarried.Checked = True Then
dblAmount = (dblIncome - dblDeductions) - (dblIncome - taxpayers(i).dblMarriedRa)
Else
If radSingle.Checked = True Then

dblAmount = (dblIncome * taxpayers(i).dblSingleRat) - dblDeductions

End If
End If
End If

i = i + 1

Loop



Return dblAmount

The amount coming is completely incorrect.

If I had an income of 100,000 with 1,000 in deductions and the married tax rate was 20% then it would be: 19800 ready to be paid. Yet the program insists on putting -1000. I have searched as much as I can on where the logic error is but no go.

The Single Else is different because of me testing. Still... I know the inputs are passing by correctly so why isn't it working? It's the last bit of the project and Ill be done dammit :lol
 

Jin34

Member
Relix said:
Hehe... easy my ass. I am stuck in the final loop of the project... this is the code:



The amount coming is completely incorrect.

If I had an income of 100,000 with 1,000 in deductions and the married tax rate was 20% then it would be: 19800 ready to be paid. Yet the program insists on putting -1000. I have searched as much as I can on where the logic error is but no go.

The Single Else is different because of me testing. Still... I know the inputs are passing by correctly so why isn't it working? It's the last bit of the project and Ill be done dammit :lol

I had the exact same problem on an tax deduction program with the "If's" but could never figure out what was wrong, how did you solve your issue?
 

Jin34

Member
Kalnos said:
Nevermind, holy bump.

Post some code and I can try to help you, man.

Well you see the thing is I think me and Relix go to the same class but I never recognized him because he's always drunk in the gaf pics lol. And it would be fucking weird going: "Hey aren't you Relix from GAF?"

So its the exact same program, I think I got most of it right, just need the loop to calculate the deduction and then organize everything and hope there isnt a program breaking error somewhere in there lol
 

Jin34

Member
Yeah I'm pretty fucked, the Open File Dialog box won't even show up even though everything seems correct.
 

Jin34

Member
Relix said:
Hey I have a fan from class. Let me take a guess...

We have a final tomorrow? =P

Yup! Probably a lot easier than this damn thing that has me in knots for like a month now, my original plan was "well since its 25 points from the test and I did well in the others and I can't figure this shit out, I'll just get like a D on the test and the rest of the grades/homework will get me a B." But then he went on and made it 50/50...

Might have to sneak in a cardboard box by the fuerza de choque tomorrow though.
 

Relix

he's Virgin Tight™
What I did was first deduct Income and Deductions to give me the Net Income that would be then compared inside the loop. If you do it without deducting it will give you wrong results...

This is basically the code I wrote, see if it works for you:

Code:
     dblNeto = dblIncome - dblDeductions

        For i = 0 To intMaxSubscript
            If dblNeto >= infoTax(i).intLowerLimit And dblNeto <= infoTax(i).intUpperLimit Then
                decSingle = infoTax(i).dblSingleRat
                decMarried = infoTax(i).dblMarriedRa
                Exit For
            End If
        Next i

        If radSingle.Checked Then
            taxCalculator = dblNeto * decSingle
            lblTaxRate.Text = decSingle.ToString("n2")
        Else
            taxCalculator = dblNeto * decMarried
            lblTaxRate.Text = decMarried.ToString
        End If
        Return taxCalculator
    End Function

Jin34 said:
Yup! Probably a lot easier than this damn thing that has me in knots for like a month now, my original plan was "well since its 25 points from the test and I did well in the others and I can't figure this shit out, I'll just get like a D on the test and the rest of the grades/homework will get me a B." But then he went on and made it 50/50...

Might have to sneak in a cardboard box by the fuerza de choque tomorrow though.

Gonna be a bitch tomorrow to even get to class with all the stuff that will be going on =P

Edit: Oh shit we have a CODE tag =P. 12,000 posts later I realize that. Goddammit.
 

Chris R

Member
Relix said:
Hehe... easy my ass. I am stuck in the final loop of the project... this is the code:

Code:
Dim dblAmount As Double
Dim i = 0

Do Until i = intMaxSubscript
    If dblIncome >= taxpayers(i).intLowerLimit And dblIncome <= taxpayers(i).intUpperLimit Then
        If radMarried.Checked = True Then
            dblAmount = (dblIncome - dblDeductions) - (dblIncome - taxpayers(i).dblMarriedRa)
        Else
            If radSingle.Checked = True Then
                dblAmount = (dblIncome * taxpayers(i).dblSingleRat) - dblDeductions
            End If
        End If
    End If
    i = i + 1
Loop

Return dblAmount



The amount coming is completely incorrect.

If I had an income of 100,000 with 1,000 in deductions and the married tax rate was 20% then it would be: 19800 ready to be paid. Yet the program insists on putting -1000. I have searched as much as I can on where the logic error is but no go.

The Single Else is different because of me testing. Still... I know the inputs are passing by correctly so why isn't it working? It's the last bit of the project and Ill be done dammit :lol

I still don't understand what you are trying to attempt with the code here. For the single rate it pretty much makes sense

Code:
dblAmount = (dblIncome * taxpayers(i).dblSingleRat) - dblDeductions

Sure, the amount you owe is equal to your income times the tax rate minus any deductions.

For the married line though...

Code:
dblAmount = (dblIncome - dblDeductions) - (dblIncome - taxpayers(i).dblMarriedRa)

The amount you owe is equal to your income minus any deductions minus your income minus the married rate. So if I earned 100k with 1000 in deductions this line would look like this.

100,000 - 1000 - 100,000 - 0.20 = -1000 (As an Int, which is what I'm guessing you convert to somewhere down the line to get your -1000 value)

Are you maybe missing a * somewhere to multiply the married tax rate? Try writing out the actual math behind what you want to accomplish and then substitute in your variable names to get the desired effect.

Also in VB.Net you need to watch out for the difference between Or/OrElse And/AndAlso. This little bit of business tripped me up coming at VB.Net for my first time, expecting short circuiting and not getting it.

Jin34 said:
Yeah I'm pretty fucked, the Open File Dialog box won't even show up even though everything seems correct.

Post some code, I'm here all night and willing to help.
 

Jin34

Member
wolfmat said:
Generally, you want to debug stuff to figure out which step goes wrong exactly.

Yeah I put the Sub procedure in the Calculate action to test it and the open file dialog never showed up.
 

Jin34

Member
Sub ArrayRates()
Dim strLine As String ' Para guardar la linea de texto.
Dim chrDelimiter() As Char = {CChar(",")} ' Determina el caracter delimitador.
Dim srdCurrent As StreamReader ' Para poner la data en el arreglo.
Dim i = 0 ' Contador para el loop

With ofdOpenFile
.Filter = "Text Files(.txt)|*.txt|All Files(*.*|*.*"
.Title = "Select a text file to open"

If .ShowDialog = Windows.Forms.DialogResult.OK Then
srdCurrent = New StreamReader(ofdOpenFile.FileName)
Else
MessageBox.Show("Debe seleccionar un archivo")
End If
End With

I limited just to the open file dialog part (cut out the rest where I put the text file data on to the structured array.

To test it I put:

Private Sub mnuCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuCalculate.Click
ArrayRates()
End Sub
 

Relix

he's Virgin Tight™
wolfmat said:
Don't see an OpenFileDialog there.

Check out this reference

With ofdOpenFile is the dialog...

I have a similar code to his and it works well....

With ofdOpen
.Filter = "Text Files *.txt|*.txt|All Files *.*|*.*"
.Title = "Select File to Open"

If .ShowDialog = Windows.Forms.DialogResult.OK Then
inputFile = File.OpenText(.FileName)
End If

and then the other read stuff into arrays.
 

Jin34

Member
Yeah I already had the net income thing. Arg I hate "For", going to switch that to Do Until or Do While.
 

Relix

he's Virgin Tight™
Jin34 said:
Yeah I already had the net income thing. Arg I hate "For", going to switch that to Do Until or Do While.

I love my little For loops =P. Btw thanks for reminding me I have to study this shit for tomorrow XD!
 

wolfmat

Confirmed Asshole
You have to define ofdOpenFile as an OpenFileDialog in the same scope at some point. Like so:
Code:
Public ofdOpenFile As New OpenFileDialog()

If that definition isn't in the same scope (or doesn't exist at all), it's not going to work.
 

Jin34

Member
wolfmat said:
You have to define ofdOpenFile as an OpenFileDialog in the same scope at some point. Like so:
Code:
Public ofdOpenFile As New OpenFileDialog()

If that definition isn't in the same scope (or doesn't exist at all), it's not going to work.

Ah I see, I have to do that even though I had the Open File toolbox thing. This is what happens when you have to take Xmas break before final work/exam lol
 

wolfmat

Confirmed Asshole
Oh, you mean you used a wizard? I don't know about those. Maybe they do something magical, heh.
But anyway, if it's already defined, that re-definition should throw an error. If that happens, you know it's something else ;)
 

Jin34

Member
Ok I got this error while debugging.

oFtAn.png
 

wolfmat

Confirmed Asshole
Besides, if you added an OpenFileDialog with a wizard to your Form, then make sure the OpenFileDialog in your Form is named correctly (ofdOpenFile). If you DID add that OpenFileDialog with a wizard, as I read it, you actually don't need to define it from the source as I described above.

If you want your OpenFileDialog to be defined from the source, you need something like this inside the Sub, directly above the "With" stuff (because of the scope):
Code:
Dim ofdOpenFile As New OpenFileDialog()

You should also be able to go UP regarding the scope, and define ofdOpenFile somewhere outside, but make sure that definition is executed before that Sub is ever called, otherwise, there's nothing at the point in time where you do the With.

Sorry for the confusion there. I guess I suck.

out0v0rder said:
Wolfmat did your name change
Yes! A Linux dude calls himself wmat as well, so I wanted to avoid confusion. Also, apparently, some people think of the White Mountain Apache Tribe when they read it.
 

Chris R

Member
Where do you initialize the taxRates? Are you allocating enough space for each line of text you will be reading in?
 

Jin34

Member
rhfb said:
Where do you initialize the taxRates? Are you allocating enough space for each line of text you will be reading in?

Code:
Public Class Form1
    ' Class level structure para el arreglo donde estaran los tax rates

    Public Structure sRates
        Public intLowerLimit As Integer
        Public intUpperLimit As Integer
        Public dblSingleRate As Double
        Public dblMarriedRate As Double
    End Structure

    ' Class level arreglo.
    Public taxRates() As sRates
 
Status
Not open for further replies.
Top Bottom