Passing Arrays Through Fortran Dll From App Turning To Single Element Arrays?
Feb 2, 2010
I have a VB.net console app and I am opening a function in a dll written in fortran. I am passing 3 arrays through the function by reference. When they come back out the otherside they ahve all tunred to arrays of only one element And that element is 0.I read on the internet somewhere that when doing this kind of thing it is a good idea to only pass the first element of the array into the function.I tried changing my function declaration to accepting single elements rather than single dimensional arrays, and now the arrays are the same length before and after the function call, but they don't seem to be changing at all, so i'm not sure that this is working
I have written a ActiveX DLL in VB 6 which is like -
[Code]...
When I do this everything works fine and I am able to pass value to dll. I am passing two structures arrays and other single values like int and double etc. So far so good. But when I insert this code in another application (created in same vb.net 2005) where I actually intent it to use then i get the following error -
System.Runtime.InteropServices.SafeArrayTypeMismatchException Specified array was not of the expected type.
I am puzzled as to why is this happening. I checked basic settings and they are same. In short the code works if i create a new project and go on but does not work and gives error if I insert in an existing application's code where i wanna use. To test I created a dll without passing structure arrays and then it worked in that application.
I ran into a situation where I have to compare an element in one array to the corresponding element in a separate array of the same size. I've tried using Google and search for the answer though all searches came up nothing I could use.
With the following code, I'd expect to get the array elements back that I put in. Instead, the last array element, is output three times.e workaround would be to dimension the array explicitly to hold four strings, but I used this contruct all over my VBA code and I'd rather know why it doesn't do what I expect.
Sub test_d() Dim youvegotitems(100) As Object Dim v(4) As String
I'm trying to pass an array from a 2D Array to a function that takes a 1D array, but each time I do I get the error Number of indices is less than the number of dimensions of the indexed array.. I know using a structure would solve the problem, but unfortunately the assignment is to use a 2D Array instead of a structure. I've declared the 2D array as such:
Const MAX_ARR_SIZE = 63 Public HouseholdCollection(MAX_ARR_SIZE, 2) As UInteger Const IDENTIFICATION_CODE = 0 Const MEMBER_COUNT = 1
In VB6 I load a recordset containg all of the records (6 fields per record)in a table into an XArray and then manipulate the records in the array and then write them back to the original table. The array issorted by the first field (1 to maybe 8000 or more) I need to find records in the array by an ID field and then move them (because of some external criteria that happens many times) from say number 400 to number 375. Then all of the other records between 375 and 399 were renumbered up 1 to fill the gaps left by the move.
The XArray worked well as it could find and also move to a next record easily to facilitate the revisions to each record quickly. Everything is done in VB6 in code and nothing visual needs to be shown to the user until say 2000 of these external changes are complete. What is the best, most efficient way to do this in the .Net framework in VB2010. Datasets, Dataviews. tableadapters, arrays. enums ?
My assignment is to have a user enter in big integers using what i think is two parallel arrays. I got this far but now im stuck. I think i need to actually convert the text box input into an array but i do not know how to do that. I am all over the place in this project.
'Created/ Revised by: Jessica Falcetta 'Cap 204 Final Project: Big Integer Project 'Project Purpose: To calculate large integers through parallel arrays
I am trying to complete a homework and seem to get stuck at the last point of passing arrays and avriables to a sub to do the calculations to produce the desired result of sales tax but can;t seem to accomplish that so far.
Code: ChartBuffer = GetCurrentChart(ChartBuffer) The error says Conversion from type 'Integer()' to type 'Integer' is not valid.
Apparently I have some type casting issues, the problem is I'm not trying to cast any types at all. I'm trying to set one array chartbuffer equal to the array returned from GetCurrentChart.
[Code]...
In the constructor of this class I am trying to set the buffer equal to the loaded chart because if I try to write information to a buffer that isn't already initialized, and then save it, it will overwrite stuff that might already be saved in the file as 0's or something, and I don't want it to do that. To prevent this from happening I'm simply going to initialize the buffer in the constructor by setting it equal to the loaded chart. Finally after that is all done I can write new information to the buffer and save it to the file without writing a mostly empty buffer (full of zero's) to the chart that is saved with information in it already.
the statement Dim state(49) As String and maintain a list of certain states. The list of states should always be in alphabetical order and occupy consecutive elements of the array. The buttons in the program should give the user the following options: (a) Take the state specified by the user in a text box and insert it into its proper position in the array. If the state is already in the array, so report. (b) Take the state specified by the user in a text box and delete it from the array. If the state is not in the array, so report. (c) Display the states in the array. "
Private Sub states_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load state(0) = "Alabama"
my issue could be found simple but I'm founding it difficults in regard of dealing with array concept in oracle and vb.netI will start by showing to you a code done in oracle side1-this script should be executed in hr schema2-create a table and call it job_testas
create table job_test as select * from jobs where 1=2
I was wondering if anyone knows a built in method ( LINQ say or a LAMBDA expression or other way ) that you can compare2 arrays - collections that would be valid for an equivalent 3rd array - collection which is a combination of the 1st two.
In a tic tac toe game I am making there are two blocks of code that are identical except that they access different arrays:[code]Arrays plyrTaken and plyrPairs are used in the first block and cmptrTaken and cmptrPairs are used in the second. Is it possible to wrap these blocks into one Sub Procedure passing the different arrays when the procedure is called?
Can this be rewritten any better using LINQ? I'm a C#er trying to think in VB.NET for this current project. It's in an ASP.NET Web Forms .vb codebehind:
Public ReadOnly Property AllowedCategoryIds As Integer() Get Dim ids = New List(Of Integer)
I have a DLL written in fortran that I know works because I am getting it from a working software package that we use daily. I am trying to call it from anything but am having problems i believe with passing the correctly formatted arguments in and out of it, so i decided to try and access it from a VB program. I chose VB because I have contacted the developer of the software package we are using and he gave me his DLL function call in VB6, even though he is not allowed to show me the FORTRAN source.
Problem is (perhaps, i think) that I am writing in VB.NET, which has different data types than VB6. Can anyone see why i am am having problems. The error i get upon running is: "AccessViolationException was unhandled: Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
I could pass a User Defined Type data structure to a Fortran DLL, that contained Short Integers, Singles (real variables) and a series of Fixed Arrays, both short integers and real variables.I am upgrading my VB6 app to Visual Studio 2008 - VB, and I want to keep the same data structures as they are used in about 300,000 lines of code.I modified the Data Structure as follows below, making sure it is of Explicit Layout, since I want the position of all variables to be the same both in VS 2008 and Fortran.Two problems arise:
1) if the LayoutKind is Explicit, such as in the example below (only part of the data structue is shown, where "..." indicate part of omitted data structure members), whenever I try to run my app, I get the following exception message, which indicates that the VBFixedArray declared at Offset 154 is in conflict with some other object, unnamed by the exception handler.
Message="Could not load type 'MyApp.SomeStruct' from assembly 'MyApp, Version=1.32.3906.33480, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 154 that is incorrectly aligned or overlapped by a non-object field."
2) if the LayoutKind is Sequential, the app will start, all the data preceding the VBFixedArrays is passed to the Fortran Dll without problem; everything that follows the VBFixedArray is garbled and unusable. To check this, I have made a Fortran subroutine in the Dll to which I pass both the Data Structure and a vector; in the Fortran subroutine, all the elements of the data structure are equivalenced to individual positions in the vector; upon return from the Fortran subroutine, I compare the elements of the data structure and those of the vector.
The problem here is that the Data Structure contains some 1300 names, and is used extensively in the application, as it is the way to pass elegantly a lot of data pertaining to a mathematical model with only one adress when accessing the Fortran Dll, in which the computing engine lies.
I have been tasked to create a Visual Basic console script that asks the user 5 times in a row to input a number into an array (sales figures in thousands), Then you display these results as a sort of tally chart.
For example for the data: sales(10,7,12,5,15) The output would be 2008:++++++++++ 2009:+++++++ 2010:++++++++++++
[Code]...
how to change the integer value from within the array into a certain number of a single character.
Below you will find a code sample that I have dummied up to try and demonstrate the issue I am having. However, this is just a dummied up piece of code. The actual program has noting to do with STUDENTS or TEACHERS. Basically, the problem I'm having is trying to have a CLASS within another CLASS each of which contain ARRAYS that need to be dynamic in size. The sample has a CLASS called STUDENTS that can have in theory many students, the number of which are unknown to the CLASS. I need to be able to add STUDENTS to the ARRAY programmatically.
The CLASSROOM Class should also be an Array since each TEACHER will have MANY Students. There will be only 1 Teacher for a given classroom but the SCHOOL will have MANY CLASSROOMS. Again, I need to programmatically add Teachers and Students without having predefined Array sizes. The code I have listed below will NOT work but it demonstrates what I am trying to achieve. I want to be able to reference the CLASS by using something like this ...
I feel like I should be able to use ARRAYLIST in both classes but haven't been able to get it to work. I've tried DIM'ing as ARRAY and can't get that to work either.If I can get ARRAYLIST to work then I shouldn't need to worry about expanding the array via UBOUND (if it's even possible).The REAL question is "How do I have a CLASS within a CLASS, each of which has ARRAYS that need to be dynamic in nature so they can be expanded as needed? The size of the array cannot be determined ahead of time".
REMEMBER . . . the actual program has nothing to do with Students and Teachers. This was just my way of demonstrating the issue using an analogy that I thought everyone could understand. The actual Class is much more involved.I have purposely hardcoded some values just to make the sample easier to work with. This is NOT how I normally program but is just here to hopefully make things a little more clear.
Here is the sample code . . . '*********************************************************************************** '*********************************************************************************** '***********************************************************************************
'Here is the code that is in the form - This obviously doesn't work
Private Sub TeacherTestDemo() Dim iTeacherIndex As Byte Dim iStudentIndex As Byte
I was wondering if there was a way to write fortran or to integrate fortran to Visual Basic .net 2010..Maybe with adding a refferance or something? what options are available?
Sorry, I'm sure this is something that has been covered many times, but I can't find quite what I am after.
I have a single row data table which contains various settings which are used within my web system. I have been toying with turning this into an XML document instead of the single row datatable, would that make more sense?Anyway, so, given that this is one record, there is a field called "locations," this field contains data as follows:
The ipAddress is just the first 5 digits of the IP and allows me to ensure that logins to certain elements (admin section managed by staff) can only be accepted when connected from a company computer (ie using our ISP) - this is a largely unnecessary feature, but stops kids I employ logging in at home and stuff!
So, as the user logs in, I can check if the IP is valid by a simple SQL query.
SELECT ips FROM settings WHERE loginLocations LIKE '%" & Left(ipAddress, 5) & " %'
What I need to be able to do now, is get the name of the users location from the dataField array.
I've come up with a few long winded looping procedures, but is there a simple way to analyse
as a string and simply get the locationName where LoginIp = IpAddressX or am I going about this in a totally ridiculous way and should turn it into an xml file? (which will then create a whole load of other questions for you about parsing XML!!)
Arrays in Visual Basic When you use arrays, you can refer to multiple values by the same name, using a number called an index or subscript to distinguish them from one another. Arrays can shorten and simplify your code, allowing you to create loops that deal efficiently with any number of elements.How to Use Arrays, Why We need it to use.
I needed to create an app using arrays. The goal of the app was to input a certain amount of points and display their level of contribution and any benefits they receive (for example: enter 500 points -> display "Gold level" and "Fieldhouse privileges, Parking at game, Football tickets"). I was supposed to use a loop and intLevel array to find the donor level that corresponds to the input amount, display the donor level using the strLevel array and using the strBen array display the benefits that apply to this donor.
What I was given:
Dim intLevel() As Integer = {50, 100, 200, 500, 1000} Dim strLevel() As String = {"Contributor", "Laker Club", "Bronze", "Silver", "Gold"}
[Code]....
My app works, but my prof's comments on it were to get rid of the "+ 1" on the first "Do Until" loop, cross off the second Do Until loop and he just wrote "not quite" next to the bottom two lines.
So basically, I'm wondering how I would write code to search for the amount of points (without having to add the "2000" so it doesn't blow up on me) and matching it with strBen. To be honest, I don't understand why I am not getting points for this.
I'm working with VB.Net, and have two one-dimensional Arrays. Is there an Inbuilt function for finding the elements that are common to both of them? Or do I have to write one for myself?
I'm having problems with 2 2-dimensional arrays. Whenever I change the value in a cell in one of them, the value of cell with the same indices changes in the other one.[code]
I need to loop through 2 different arrays.(Visual Basic)If I do a loop within a loop, will I get the results I need?For each order in ShippedOrders and For each order in UnshippedOrders........