|
|
i have a file demo.txt And that Contain
1 29 38 29 53
2 34 53 54 34
4 54 65 23 62
5 3 23 24 25
I want get small value of a row
Example:
i read row 1 and get small value is 1
How will i do
anhtin
|
|
|
|
|
Read the line into a string and split that string on the space character. Loop through the array that you get, converting each string into an integer and checking which one is the smallest.
---
b { font-weight: normal; }
|
|
|
|
|
assume the following method in a COM
virtual void * __stdcall Print(BSTR msg){
char * buf= new char[128];
sprintf(buf,"return by print interface");
return (void *)buf;
}
how should I handle the returned pointer by the method above in C#, so that I can get the proper string set by the method?
Vincent
|
|
|
|
|
If this is COM you can't pass back memory allocated by new. You need to allocate the char array with AllocCoTaskMem(). After that you should just be able to to a Marshal.PtrToStringAnsi() call on the value.
Jared Parsons
jaredp@beanseed.org
http://jaredparsons.blogspot.com/[^]
|
|
|
|
|
Also, is it legal for void* to be an [out] parameter to a COM interface? IIRC this is not legal since COM would be unable to marshal the underlying data.
Jared Parsons
jaredp@beanseed.org
http://jaredparsons.blogspot.com/[^]
|
|
|
|
|
hi,Jared
my COM was built in pure unmanaged code.I can't use AllocCoTaskMem,can I?
Vincent
|
|
|
|
|
dragooooon lee wrote: my COM was built in pure unmanaged code.I can't use AllocCoTaskMem,can I?
You can use Marashal.AllocCoTaskMem(). But I don't think that applies in this case since this is purely managed. I assumed your example was in C++. I believe that since it's all managed the CLR marshaller will do the dirty work. I haven't every written a purely managed COM interface implemenation though so I would check some documenation.
Can you post the IDL file for the COM interface? That would help out a bit.
Jared Parsons
jaredp@beanseed.org
http://jaredparsons.blogspot.com/[^]
|
|
|
|
|
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(853b4626-393a-44df-b13e-64cabe535dbf),
nonextensible,
pointer_default(unique)
]
interface IMyComponent : IUnknown
{
[id(1), helpstring("method Initialize")] void * __stdcall Print(BSTR msg);
};
[uuid(0c6bb614-8563-49ea-b5ce-e6b7febebc27)]
coclass RtpSource
{
interface IMyComponent ;
};
Vincent
|
|
|
|
|
System.AccessViolationException caught when I use CoTaskMemAlloc()
Vincent
|
|
|
|
|
|
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(853b4626-393a-44df-b13e-64cabe535dbf),
nonextensible,
pointer_default(unique)
]
interface IMyComponent : IUnknown
{
[id(1), helpstring("method Initialize")] void * __stdcall Print(BSTR msg);
};
[uuid(0c6bb614-8563-49ea-b5ce-e6b7febebc27)]
coclass RtpSource
{
interface IMyComponent ;
};
------------------------------------------------------------
C# code
IntPtr p = ((IMyComponent)rtpsource).Print(s);
StringBuilder sb = new StringBuilder();
sb.Append(Marshal.PtrToStringBSTR(p));
Vincent
|
|
|
|
|
Two problems are jumping out at me.
- I don't think that it's legal for a COM method to return void* without a specification of a custom marshaller. Otherwise it's impossible for COM to figure out how to Marshal the data between processes and/or apartments. Then again I'm not a COM expert so one of them might want to chirp in here.
- Shouldn't the COM method be returning an HRESULT? Otherwise how do you detect failure?
Also, can you post the implementation of the COM interface or at least the Print method? And how did you aquire the rptsource variable (please post that code as well).
Jared Parsons
jaredp@beanseed.org
http://jaredparsons.blogspot.com/[^]
|
|
|
|
|
it's ugly since it's just a test.
thanks anyway.maybe I need to read some books about interoperation to figure it out.
Vincent
|
|
|
|
|
It's ugly since it's just a test.
Thanks anyway.Maybe I need to read some books about interoperation to figure it out
Vincent
|
|
|
|
|
I've got an application, and i want to to be able to spawn an AppDomain with it, and supply it with some Main method args that it can then use to connect to the creating app, and then continue execution as normal.
How do i do this when creating something using:
AppDomain.CreateDomain()?
Cheers
Tris
-- modified at 18:06 Sunday 26th March, 2006
|
|
|
|
|
How does one determine the version of windows that thier program is running on?
|
|
|
|
|
Look up the help on these ...
System.OperatingSystem os<br />
os = Environment.OSVersion<br />
This may also help CodeGuru article[^]
...Steve
1. quod erat demonstrandum
2. "Give a man a fish and you've fed him for a day. Teach him how to fish and you've fed him for life." I read that somewhere once
|
|
|
|
|
Hi,
Ive seen alot of sourcecode and demos from msdn featuring code to access an sql server.
The code uses SqlDataAdapters, etc.
But Ive never seen code such as
sqlconnection.open();
or
sqlConnection.close();
I understand that as long as you feed an sqldataadapter a connection string, it will connect on it own.
However, my question is, how long does it stay connected for? Or does it require to be disconnected manually?
Or is it a case that the connection is dropped when the object is disposed?
Any thoughts
Andy
|
|
|
|
|
If a DataAtapter opens the connection, it will also close it. If you open the connection before handing it to the DataAdapter, you also have to close it yourself afterwards.
---
b { font-weight: normal; }
|
|
|
|
|
I have a DataGridView dataGridView1.
DataGridViewTextBoxColumn nCol;
nCol = new DataGridViewTextBoxColumn();
nCol.Name = "col1";
dataGridView1.Columns.Add(nCol);
nCol = new DataGridViewTextBoxColumn();
nCol.Name = "col2";
dataGridView1.Columns.Add(nCol);
And I want to add a row to it when I click a button so:
DataGridViewRow tempRow = new DataGridViewRow();
tempRow.CreateCells(dataGridView1);
tempRow.Cells["col1"].Value = "test1";
tempRow.Cells["col2"].Value = "test2";
dataGridView1.Rows.Add(tempRow);
But it returns error:
Column named col1 cannot be found.
Parameter name: columnName
When I access it by numeric index all ok. But when by Column name it returns this error. Where are I am wrong?
-- modified at 15:33 Sunday 26th March, 2006
|
|
|
|
|
I am trying to debug a Windows Service written in VS 2005 in VS 2005. I installed the service, it works fine, now I just wanna step through the code. I started the service, went into VS 2005 opened the project went to Debug selected Attach to process and in the list I have to entries for my service: one of type T-SQL code, Managed code and one that is Managed . I selected the T-SQL code, Managed code hit the Attach button and I get the Unable to attach to the process. A debugger is already attached. error message. Am I missing something here?
regards,
Mircea
Many people spend their life going to sleep when they’re not sleepy and waking up while they still are.
|
|
|
|
|
It's not what you are looking for, but for Windows services what I do is create a console application that spawns a secondary thread and calls the OnStart method of the service. This way I can debug it much more easily.
Luis Alonso Ramos
Intelectix
Chihuahua, Mexico Not much here: My CP Blog!
|
|
|
|
|
An even simpler method I found is adding Debugger.Launch() in the OnStart method of the service. This will launch a dialog to select the debugger. Pretty neat.
regards,
Mircea
Many people spend their life going to sleep when they’re not sleepy and waking up while they still are.
|
|
|
|
|
How can i check if a database exists on an instance of SQL Server?
|
|
|
|