|
The trick is to load the 12K items into an in-memory data structure, and filter on that, rather than using the Like operator against the database.
|
|
|
|
|
Peter, I already trying do this, but i need improve the load of that 12k items.
I already tried serialize and save the data in a file and load the file into the
datasource, but the result are not good too.
After loaded in memory my data, I use a filter with BinarySearch (modified) and works great.
Thx for replys guys
[]'s
Eder Sá
|
|
|
|
|
This is similar to an issue I faced on mobile data terminals (MDTs) a while back. Rather than storing the data in the database, we used a series of indexed files which could quickly be read and parsed at runtime. This meant that the amount of data we held in memory at any one time was minimal, and the processing was extremely rapid.
|
|
|
|
|
Is the Sqlite-database located on your HTC? If so, try measuring the load-speed of a textfile to determine whether it can handle your required minimumspeed.
I'd be using the GetValues method of the datareader to get an array of objects. Won't be a wowing-difference though. There should also be a SuspendLayout method on your dataGrid control.
I are Troll
|
|
|
|
|
Hi,
Use thread to load and fill the data that will make your application responsive while the data is loading. Using thread in your application is not big deal but you have to take care about thread synchronization in your code.
hope this helps.
Nitheesh George
http://www.simpletools.co.in
|
|
|
|
|
This still doesn't help him lower the 6 seconds or so that he's loading the data.
|
|
|
|
|
I have problem when I am try to send byte to serial port.
for example
int x=153;
when i get the hexa decimal of 153 it's 99
but when I am try to send it , it appear as 3F but I want it to be 99 as hexa decimal
|
|
|
|
|
Honeyboy_20 wrote: I have problem when I am try to send byte to serial port. for example int x=153; when i get the hexa decimal of 153 it's 99 but when I am try to send it , it appear as 3F but I want it to be 99 as hexa decimal
There is more text than information here. It needs dissecting.
Honeyboy_20 wrote: I have problem when I am try to send byte to serial port.
that is not a question. And neither is the rest of your message. So I will ask some questions you can think about.
Honeyboy_20 wrote: int x=153;
why would you need an int if you want to send a byte. How about declaring a byte instead?
Honeyboy_20 wrote: when i get the hexa decimal of 153 it's 99
why would you need hex at all? how is that relevant? you can send bytes through a serial port, no matter what values they contain or whatever they represent.
Honeyboy_20 wrote: but when I am try to send it , it appear as 3F
that is a bit of a surprise. there must be some magical code involved here. I have a rough idea how one could do it, but hey, I trust your code is much better than that.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
An excellent analysis; have a 5.
I must get a clever new signature for 2011.
|
|
|
|
|
Thank you kindly sir.
I can hardly wait for the next episode.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
I do agree with Luc Pattyn in that sending 153 or 0x99 doesn't make any difference. It's just a matter of output formatting.
Maybe there is some decimal-to-hex formatting code in your program, which I believe you don't need at all.
The reason for me to suspect that are the following equations:
153 = 0x99
99 = 0x63
63 = 0x3F So there is a connection between the numerical values you mentioned.
Ciao,
luker
|
|
|
|
|
Is that a problem with signed versus unsigned bytes? 153 is bigger than the maximum value of a signed byte, while 99 is small enough to fit into a signed byte.
But there are no signed bytes in .NET... How do you convert from int to byte?
|
|
|
|
|
Bernhard Hiller wrote: But there are no signed bytes in .NET...
And what do you think System.SByte is for ? :p
|
|
|
|
|
int num = 153;
string hex = num.ToString("X2");
byte send = byte.Parse(hex , System.Globalization.NumberStyles.AllowHexSpecifier);
|
|
|
|
|
I am building an application that is supposed to eventually print out a receipt. Someone told me that i can get an E-POS receipt printer. Is it possible to interface it with a computer, that is, is there any DLL that i can use to send the printing jobs to an E-POS printer. I am programing using C Sharp (Of course).
Wamuti: Any man can be an island, but islands to need water around them!
Edmund Burke: No one could make a greater mistake than he who did nothing because he could do only a little.
|
|
|
|
|
If the printer comes with Windows printer driver, you basically just have to set the page size and print to the document.
Older printers let you print to them like STDOUT so you'd just issue WriteLines which is easy enough to do.
Some printers accept a raw data format for printing, in which case you can check out this Microsoft KB[^].
Also, check with the EPOS supplier and see if they have an SDK. You may be best to research a couple of leading ones or a standard format and then give you end user a set of choices, failing back to one of the methods above.
Edit: just remembered the Microsoft POS framework[^]. It seemed pretty good when I last looked into it.
Cheers.
|
|
|
|
|
Google [NAME OF PRINTER] and Drivers, DLL or SDK.
That should be enough to find the answer to your problem.
------------------------------------
I will never again mention that I was the poster of the One Millionth Lounge Post, nor that it was complete drivel. Dalek Dave
CCC Link[ ^]
Trolls[ ^]
|
|
|
|
|
I'm not sure about "E-POS", is that something based on the Unified POS standard? UPOS is an architecture for communicating with retail point of sale devices. The manufacturer of a UPOS-enabled receipt printer supplies a "service object" dll. Your code would use "POS for .NET" to talk to the receipt printer.
See:
Microsoft POS for .NET Overview[^]
National Retail Federation, Unified POS[^]
|
|
|
|
|
Hi Guys,
I have a DLL created in Visual Studio 6 / C++ with the following function
MyDLL_API int __stdcall MyMethod( char *strA, char *strB, char *strC )
i am trying to reference it like so in c# 2005
[DllImport("mydll.dll", CharSet = CharSet.Auto)]
public static extern int MyMethod(ref string strA, ref string strB, ref string strC);
Here is the debugging code i added to MyMethod but the params are garbage when presented on screen:
MyDLL_API int __stdcall MyMethod( char *strA, char *strB, char *strC )
int ret_val = 0;
char cA[161] = {0};
char cB[161] = {0};
char cC[161] = {0};
LPSTR buffer = NULL;
char cMsg[161] = {0};
buffer = (LPSTR)strA;
strncpy( cA, buffer, 161);
buffer = (LPSTR)strB;
strncpy( cB, buffer, 161);
buffer = (LPSTR)strC;
strncpy( cC, buffer, 161);
sprintf( cMsg, "Params A=%s,B=%s,C=%s", strA, strB, strC );
MessageBox( NULL, cMsg, "Dispense", MB_OK );
the function gets called but all i see is garbage in the parameters passed in, other than a string what else can i use to pass to the Char*?
Thanks In Advance
modified on Tuesday, March 22, 2011 10:29 AM
|
|
|
|
|
The default marshalling type for C# strings is Unicode (2 bytes per character) as described here[^]. You will need to modify your C++ code to handle Unicode characters, or add a front end converter from WCHAR to CHAR .
I must get a clever new signature for 2011.
|
|
|
|
|
Thanks Richard,
I cant modify the dll as its from a third party and they just sent me on a samepl of the code they use how would I go about adding a front end converter from WCHAR to CHAR?
Thanks In Advance
|
|
|
|
|
Just write your own C/C++ function that interfaces to the C# code and takes the three strings and converts them from Unicode to char using the WideCharToMultiByte()[^] function. You can then pass the converted strings to the DLL routines.
I must get a clever new signature for 2011.
|
|
|
|
|
Just an update on this, I found that if i do the following in C#
[DllImport("mydll.dll", CharSet = CharSet.Auto)]
public static extern int MyMethod(
[param: MarshalAs(UnmanagedType.VBByRefStr)]
ref string strA,
[param: MarshalAs(UnmanagedType.VBByRefStr)]
ref string strB,
[param: MarshalAs(UnmanagedType.VBByRefStr)]
ref string strC);
That my messagebox in MyMethod in the dll shows the first character of the strings eg passing 1, 234, 5 the results are A=1,B=2,C=5
|
|
|
|
|
That sounds about right as the Unicode characters for these values are the same as ANSI. However, because the Unicode are 2-byte characters, and the second byte in these cases will be zero, you effectively see a 1 character string in each parameter.
I must get a clever new signature for 2011.
|
|
|
|
|
Hi Richard,
Thanks for all the help.
After playing around with a few other things i found that this works
[DllImport("MyDll.dll", CharSet = CharSet.Unicode)]
public static extern int MyMethod(
[param: MarshalAs(UnmanagedType.LPStr)]
StringBuilder strA,
[param: MarshalAs(UnmanagedType.LPStr)]
StringBuilder strB,
[param: MarshalAs(UnmanagedType.LPStr)]
StringBuilder strC);
changeg need were to remove the ref keyword, changes string to stringbuilder and the unmanaged type to LPStr
|
|
|
|