|
The documentation of the DLL is (to put it politely) somewhat sketchy - for this routine:
'char* GetWindDirStr_V (char* dirStr)
Description
This function gets the currenct (sic!) wind direction in string representation.
Return Values
current wind direction
"---" represents no data available.'
The DllImport statement is:
<DllImport("VantagePro.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Public Function GetWindDirStr_V(dirStr As StringBuilder) As StringBuilder
End Function
While string length overflow is an obvious possibility, the longest string actually passed is three characters (e.g. 'NNE'), and buffers for text wind direction strings which are explicitly sized elsewhere in Structures passed to and from the DLL are always char(5). In addition, the code was extensively exercised without any problems outside timer OnElapsed routines and worked fine - it only fails when called from interrupt code.
|
|
|
|
|
If you enclose the line gwdcurrent.WindDir = GetWindDirStr_V(sbWindDir).ToString in a try-catch block, can you catch an exception? If so, what's the message - and GetLastError's message?
|
|
|
|
|
I had not previously tried that, but I did, with Debug.Print commands inserted to display the information. Unfortunately, the crash is a Windows "This application has stopped working" one, which is apparently not prevented by exception-trapping the line of code that provokes it, and it won't let me 'Debug' it with the open instance of VS.
|
|
|
|
|
Hi all. First of all I know that there are a lot of questions like mine, but I just can't solve it.
Secondly, this app have to export XML format from spritesheet to a file.
What I did is just create a simple button, added Macro and pasted this code into:
Sub ExportXML()
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
newFileName = Application.GetSaveAsFilename("out.xml", "XML Files (*.xml), *.xmls")
If newFileName = False Then
Exit Sub
End If
If objFSO.FileExists(newFileName) Then
objFSO.DeleteFile (newFileName)
End If
ActiveWorkbook.XmlMaps("Root_Map").Export URL:=newFileName
Set objFile = objFSO.OpenTextFile(newFileName, ForReading)
Dim count
count = 0
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If count = 0 Then
strNewContents = strNewContents & "<?xml version=""1.0"" ?>" & vbCrLf
ElseIf count = 1 Then
strNewContents = strNewContents & "<Root xmlns=""http://tempuri.org/import.xsd"">" & vbCrLf
Else
strNewContents = strNewContents & strLine & vbCrLf
End If
count = count + 1
Loop
objFile.Close
Set objFile = objFSO.OpenTextFile(newFileName, ForWriting)
objFile.Write strNewContents
objFile.Close
End Sub
When I have a basic table with data and a button, which when I press it, I get to the Save As screen. I save it as "out.xml" in my Desktop, but I when press OK, i got and error saying : " Run-time error '9': Subscript out of range ' ", and this
ActiveWorkbook.XmlMaps("Root_Map").Export URL:=newFileName line becomes yellow. What I am doing wrong in here? Thank you very much and appreciate any help from you guys .
|
|
|
|
|
Looking at the documentation[^], that error suggests that your active workbook doesn't contain an XML map with the name "Root_Map".
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
So I need to create a new XML document? But I want to actually export a spreadsheet file to an XML format file. Now I am confused.
|
|
|
|
|
Well, you need to Add an XmlMap[^] before you can access it.
If you just want to export the sheet to XML, there are several suggestions here[^].
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thank you very much, Richard.
|
|
|
|
|
General question. I am new to Visual Basic, but have done my share of programming; albeit years ago. I understand the logic of programming, but my question is more about "best practices"
Background:
I'd like to create a program that stores a person's information (Name, contact #, email etc). For each person I'd like to have an array of times for various bike races. Optimally I'd have the ability to store split times as well. Now, different people may have a different number of races.
My question: What is best practice for the type of variables to create for such a project. Array list? Structures? I'm sure there are many ways to index the data with the person, but I'd like to do it in the best, most efficient manner.
Thanks
|
|
|
|
|
Tables, relational.
One table with people, one with races, one that combines a race, a person, and a time. Easy to query.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
so, is this a hashtable? an array? what is used in VB to set up a table, relational?
|
|
|
|
|
DJHJr wrote: table, relational
Fairly certain his is talking about a relational database.
|
|
|
|
|
I guess my question is more rudimentary. Trying to get my brain around the "best practice" for an indexed array from a VB programming perspective. I have 12 people who could have anywhere from 1 to 20 races. Each race has 4 "split" times. I want to be able to analyze the racers and various stats based on times and courses run. I can handle the "programming logic" I'm struggling with the Programming part of the data organization.
|
|
|
|
|
Okay.... and nothing you have said changes that the "best practice" based on the information that you have provided to us at this time is to use a database. If for some reason that you cannot or will not use a database to store and manipulate your data, then I suppose that the next best thing for you to do would be to use a List.
|
|
|
|
|
thanks...I think I am being thick...I'll read up on database structures. Will keep you posted with my progress
|
|
|
|
|
Okay. I've done some more work, and created some tables and have my logic, Tables, and Keys planned. My consternation now is how to open connections to SQL databases. I cant seem to find a good resource on how to create and then read/write to the database. Any ideas??
|
|
|
|
|
I wrote a small utility app for printing invoices from a DOS Accounting system in PDF format.
I probably made the mistake of placing the Adobe PDF object in a dialog window that I created. I call the dialog window, run a Sub new and program the PDF object to load the PDF which works great except for the action below.
But it always tries to load the PDF in the Adobe Viewer first, and says "Cannot use Adobe Reader to view PDF in your web browser, Reader will now exit. Please exit your browser and try again." So I click OK or something and the Adobe Reader window closes and my dialog appears with the PDF loaded, all formatted and everything.
I'm just trying to get rid of the error message. Any insight or suggestions are appreciated.
|
|
|
|
|
Assignment
It’s often necessary to convert between units. In this exercise, you will create two functions for converting between units of distance. The first function will be called ConvertMilesToKilometers(), which will accept one parameter for the number of miles. It will return the equivalent number of kilometers. The second function will be called ConvertKilometersToMiles() and will accept kilometers as its parameter; this will return the equivalent number of miles.
The main method will ask the user if he or she wants to convert miles to kilometers or kilometers to miles. It will then ask for the number of miles or kilometers. It will call the appropriate method and display the converted value.
To convert miles to kilometers, divide miles by 0.62137. To convert kilometers to miles, multiply kilometers by 0.62137.
Example
Do you want to convert to Miles or Kilometers? (M or K): K
Enter number of Kilometers: 3.5
3.5 kilometers equals 2.174795 miles.
|
|
|
|
|
This is what I have so far, but I can't get past putting in the number of units to use. I feel like I'm never going to get a hang of this coding stuff.
Module Module1
Dim miles As Decimal = 0
Dim kilometers As Decimal = 0
Dim answer As String
Sub Main()
Console.WriteLine("Do you want to convert miles or kilometers?")
answer = Console.ReadLine()
If answer = "miles" Then
Console.WriteLine("What is the number of miles?")
Console.ReadLine()
Call convertMilesToKilometers()
Console.WriteLine("The converted value is: " & kilometers)
ElseIf answer = "kilometers" Then
Console.WriteLine("What is the number of kilometers?")
Console.ReadLine()
Call convertKilometersToMiles()
Console.WriteLine("The converted value is: " & miles)
End If
Console.ReadLine()
End Sub
Function convertMilesToKilometers() As Decimal
kilometers = miles / 0.62137
Return kilometers
End Function
Function convertKilometersToMiles() As Decimal
miles = kilometers * 0.62137
Return miles
End Function
End Module
|
|
|
|
|
What does "I can't get past putting in the number of units to use" mean? You are ignoring any user input except for the,
answer = Console.ReadLine() line. You would have to do something just like that to get the number of miles or kilometers that the user wants to convert....
|
|
|
|
|
Oh, my goodness! I fixed the problem, and now everything works! Thank you!
|
|
|
|
|
|
Not entirely sure what Language you are using here but it looks very much like VB. Therefore assuming that it is VB.
On the surface your code looks correct. If I had to rewrite the code it would look something like this:
Module Module1
Dim distance As Decimal = 0
Dim answer As String = nothing
Sub Main()
Console.WriteLine("Do you want to convert miles or kilometers? (M or K)")
answer = Console.ReadLine()
Console.WriteLine("What is the distance?")
distance = Console.ReadLine()
If answer = "M" Then
Console.WriteLine("The converted value is: " convertToKM(distance))
Else
Console.WriteLine("The converted value is: " & converToML(distance))
End If
Console.ReadLine()
End Sub
Function convertToKM(distance) As Decimal
Dim km as Decimal = 0
km = distance / 0.62137
Return km
End Function
Function convertToML(distance) As Decimal
Dim ml as Decimal = 0
ml = distance * 0.62137
Return ml
End Function
End Module
|
|
|
|
|
Hello,
I am developing an application with VB6 that need to use serial communication (MSComm control). Each data received from the input must be processed in the OnComm procedure. I have problem handling this OnComm events.
My question is what happens when my program is working inside the OnComm() sub, and another OnComm event rises (receiving new data on the port while the processing of the first data hasn't finished yet) ??
Will my program not begin processing the second event until he finishes with the first, or it will handle them simultaneously, or it will keep the second data waiting in the input buffer .. ??
If you could explain to me what happens exactly I would be very grateful.
|
|
|
|
|
Member 10568908 wrote: If you could explain to me what happens exactly I would be very grateful. VB6 is not built for multithreading; the language has been replaced by VB.NET some time ago.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|