[Shapelib] C# wrapper around DBFReadIntegerAttribute.
C S
usmsci at yahoo.com
Tue Jul 10 15:50:45 EDT 2007
David,
sorry .. the error i get is:
"Additional information: Object reference not set to
an instance of an object."
thanks..
Chad
--- David.Gancarz at ci.orlando.fl.us wrote:
> There is an existing c# wrapper on the shapelib site
> which you can use
> directly, or use for comparison to your own code.
>
> David Gancarz, P.E.
> Systems Development Manager
> City of Orlando
> 400 S Orange Ave
> Orlando, FL 32802
> (407) 246-3062
> Florida has a very broad public records law. As a
> result, any written
> communication created or received by City of Orlando
> officials and
> employees will be made available to the public and
> media, upon request,
> unless otherwise exempt. Under Florida law, email
> addresses are public
> records. If you do not want your email address
> released in response to a
> public records request, do not send electronic mail
> to this office.
> Instead, contact our office by phone or in writing.
>
>
>
> C S <usmsci at yahoo.com>
> Sent by: shapelib-bounces at lists.maptools.org
> 07/09/2007 03:52 PM
> Please respond to
> Shapelib Development <shapelib at lists.maptools.org>
>
>
> To
> shapelib at lists.maptools.org
> cc
>
> Subject
> [Shapelib] C# wrapper around
> DBFReadIntegerAttribute.
>
>
>
>
>
>
> hi all!
>
> i hope someone somewhere out there is or has tried
> to
> to do some C# stuff around the C API.
>
> i wrote a C++ program to read a SHP and DBF file and
> get the attributes from a certain column and then
> tried the same thing using a basic C# wrapper. most
> things seem to work fine but DBFRead**Attribute
> stuff
> just doesnt seem to work. here is my code for
> re-writing the DBF struct(not headers in C#) and my
> extern statement.
>
> [StructLayout(LayoutKind.Sequential)]
> public struct DBFInfo
> {
> public IntPtr fp;
> public int
> nRecords;
> public int
> nRecordLength;
> public int
> nHeaderLength;
> public int
> nFields;
> public IntPtr
> panFieldOffset;
> public IntPtr
> panFieldSize;
> public IntPtr
> panFieldDecimals;
> public string
> pachFieldType;
> public string
> pszHeader;
> public int
> nCurrentRecord;
> public int
> bCurrentRecordModified;
> public string
> pszCurrentRecord;
> public int
> bNoHeader;
> public int
> nBufSize;
> };
>
> [DllImport("shapelib.dll", EntryPoint =
> "DBFReadIntegerAttribute")]
> public static extern int
> DBFReadIntegerAttribute(DBFInfo myDBFHandle, int
> shape, int field);
>
> i am using the shapelib.dll from the folder
> shapelib(vc7.1) that i downloaded. i am using by the
> way Visual Studio .NET 2003(does this make any
> difference?).
>
> then in a function i try to call this function to
> get
> the values in a loop of all the fields.
> /**************************************************
> //in some function:
>
> int shape_total = 0;
> int *width = null
> int *decimals = null;
> int total_matches = 0;
> string fieldName = "";
>
> public static unsafe int population(IntPtr SPtr,
> IntPtr DPtr, SHPInfo Shandle, DBFInfo Dhandle)
> {
> for(int i = 0; i < Dhandle.nFields; i++)
> {
> outfile.Write(DBFGetFieldInfo(Dhandle, i+1, out
> fieldName, out width, out decimals));
> outfile.Write(" name: ");
> outfile.WriteLine(fieldName);
> }
> }
>
> in my output for every field i am always getting
> FTInvalid and fieldName is always blank. upon
> debugging and looking at my local watches right
> after
> i do the first DBFGetFieldInfo call here are the
> list
> of watches under Dhandle and their values, with
> their
> types:
>
> bCurrentRecordModified 0 int
> bNoHeader 0 int
> fp 268766432 int
> nBufSize 0 int
> nCurrentRecord -1 int
> nFields 101 int
> nHeaderLength 3265 int
> nRecordLength 926 int
> nRecords 28 int
> pachFieldType
>
"NNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNýýýý"
> string
> panFieldDecimals 48530680
> int
> panFieldOffset 48521256
> int
> panFieldSize 48530232 int
> pszCurrentRecord
>
"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍýýýý"
> string
> pszHeader "AREA" string
>
> the number of fields, records, the header string and
> record length are all correct and match up well the
> C++ output i am getting in the watches their. but
> notice nCurrentRecord is -1 and the decimals, offset
> and pszCurrentRecord are showing crazy stuff. the
> pszCurrent record in the visual studio debugging
> tool
> is nice enough to show you ALL the fields values..in
> C++ its correct, in C# i get these weird 'I'
> characters. maybe because nCurrentRecord is -1
> somehow?
>
> i am at my wits end. the SHP functions work just
> fine.
>
>
> is there anything i could try? can anyone offer any
> pointers?
>
>
>
>
>
____________________________________________________________________________________
> Building a website is a piece of cake. Yahoo! Small
> Business gives you all
> the tools to get online.
> http://smallbusiness.yahoo.com/webhosting
> _______________________________________________
> Shapelib mailing list
> Shapelib at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/shapelib
>
> > _______________________________________________
> Shapelib mailing list
> Shapelib at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/shapelib
>
____________________________________________________________________________________
Park yourself in front of a world of choices in alternative vehicles. Visit the Yahoo! Auto Green Center.
http://autos.yahoo.com/green_center/
More information about the Shapelib
mailing list