473,594 Members | 2,812 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Using iterators to write in the structure being iterated through?

Hello!

I am currently trying to port a C++ code to python, and I think I am stuck
because of the very different behavior of STL iterators vs python
iterators. What I need to do is a simple arithmetic operations on objects
I don't know. In C++, the method doing that was a template, and all that
was required is that the template class has an iterator conforming to the
STL forward iterator definition. Then, the class would look like:

template <class H>
class MyClass
{
public:

MyClass(H& o1, H& o2) : object1(o1), object2(o2) {}

void compute();

private:
H& object1;
H& object2;

};

template <class H>
void MyClass::comput e()
{
typedef typename H::iterator I;

I o1_begin = object1.begin() ;
I o2_begin = object2.begin() ;
I o1_end = object1.end();

for(I io1 = o1_begin, io2 = o2_begin; io1 != o1_end; ++io1, ++io2)
{
// Do something with *io1 and *io2, for instance:
// *io1 += *io2;
}
}

This is all nice: any object having a forward iterator works in there.

Then I discovered python and wanted to use all its goodies. I thought it
would be easy to do the same thing but I can't: the iterator mechanism is
read-only, right? So it does no make sense to write:

io1 = iter(object1)
io2 = iter(object2)

try:
while 1:
io1.next() += io2.next()
except StopIteration:
pass

That won't work:
SyntaxError: can't assign to function call

Here is my question: how could I do that and retain enough generallity?

Thanks!

Pierre

Jul 26 '06 #1
10 1616
I think you are going to need to provide some python minimal code as an
example of what is not working for you.

-Chris
On Wed, Jul 26, 2006 at 11:39:36AM -0400, Pierre Thibault wrote:
Hello!

I am currently trying to port a C++ code to python, and I think I am stuck
because of the very different behavior of STL iterators vs python
iterators. What I need to do is a simple arithmetic operations on objects
I don't know. In C++, the method doing that was a template, and all that
was required is that the template class has an iterator conforming to the
STL forward iterator definition. Then, the class would look like:

template <class H>
class MyClass
{
public:

MyClass(H& o1, H& o2) : object1(o1), object2(o2) {}

void compute();

private:
H& object1;
H& object2;

};

template <class H>
void MyClass::comput e()
{
typedef typename H::iterator I;

I o1_begin = object1.begin() ;
I o2_begin = object2.begin() ;
I o1_end = object1.end();

for(I io1 = o1_begin, io2 = o2_begin; io1 != o1_end; ++io1, ++io2)
{
// Do something with *io1 and *io2, for instance:
// *io1 += *io2;
}
}

This is all nice: any object having a forward iterator works in there.

Then I discovered python and wanted to use all its goodies. I thought it
would be easy to do the same thing but I can't: the iterator mechanism is
read-only, right? So it does no make sense to write:

io1 = iter(object1)
io2 = iter(object2)

try:
while 1:
io1.next() += io2.next()
except StopIteration:
pass

That won't work:
SyntaxError: can't assign to function call

Here is my question: how could I do that and retain enough generallity?

Thanks!

Pierre

--
http://mail.python.org/mailman/listinfo/python-list
Jul 26 '06 #2
Pierre Thibault wrote:
Hello!

I am currently trying to port a C++ code to python, and I think I am stuck
because of the very different behavior of STL iterators vs python
iterators. What I need to do is a simple arithmetic operations on objects
I don't know. In C++, the method doing that was a template, and all that
was required is that the template class has an iterator conforming to the
STL forward iterator definition. Then, the class would look like:

template <class H>
class MyClass
{
public:

MyClass(H& o1, H& o2) : object1(o1), object2(o2) {}

void compute();

private:
H& object1;
H& object2;

};

template <class H>
void MyClass::comput e()
{
typedef typename H::iterator I;

I o1_begin = object1.begin() ;
I o2_begin = object2.begin() ;
I o1_end = object1.end();

for(I io1 = o1_begin, io2 = o2_begin; io1 != o1_end; ++io1, ++io2)
{
// Do something with *io1 and *io2, for instance:
// *io1 += *io2;
}
}

This is all nice: any object having a forward iterator works in there.

Then I discovered python and wanted to use all its goodies. I thought it
would be easy to do the same thing but I can't: the iterator mechanism is
read-only, right? So it does no make sense to write:

io1 = iter(object1)
io2 = iter(object2)

try:
while 1:
io1.next() += io2.next()
except StopIteration:
pass

That won't work:
SyntaxError: can't assign to function call

Here is my question: how could I do that and retain enough generallity?
You need a temporary variable (out in the example below):
>>accus = [[] for i in range(3)]
ins = ("abc" for i in range(3))
outs = iter(accus)
while 1:
.... out = outs.next()
.... out += ins.next()
....
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
StopIteration

In idiomatic Python that becomes
>>accus = [[] for i in range(3)]
ins = ("abc" for i in range(3))
outs = iter(accus)
from itertools import izip
for out, in_ in izip(outs, ins):
.... out += in_
....
>>accus
[['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
Peter

Jul 26 '06 #3
On Wed, 26 Jul 2006 18:54:39 +0200, Peter Otten wrote:
Pierre Thibault wrote:
>Hello!

I am currently trying to port a C++ code to python, and I think I am stuck
because of the very different behavior of STL iterators vs python
iterators. What I need to do is a simple arithmetic operations on objects
I don't know. In C++, the method doing that was a template, and all that
was required is that the template class has an iterator conforming to the
STL forward iterator definition. Then, the class would look like:

template <class H>
class MyClass
{
public:

MyClass(H& o1, H& o2) : object1(o1), object2(o2) {}

void compute();

private:
H& object1;
H& object2;

};

template <class H>
void MyClass::comput e()
{
typedef typename H::iterator I;

I o1_begin = object1.begin() ;
I o2_begin = object2.begin() ;
I o1_end = object1.end();

for(I io1 = o1_begin, io2 = o2_begin; io1 != o1_end; ++io1, ++io2)
{
// Do something with *io1 and *io2, for instance:
// *io1 += *io2;
}
}

This is all nice: any object having a forward iterator works in there.

Then I discovered python and wanted to use all its goodies. I thought it
would be easy to do the same thing but I can't: the iterator mechanism is
read-only, right? So it does no make sense to write:

io1 = iter(object1)
io2 = iter(object2)

try:
while 1:
io1.next() += io2.next()
except StopIteration:
pass

That won't work:
SyntaxError: can't assign to function call

Here is my question: how could I do that and retain enough generallity?

You need a temporary variable (out in the example below):
>>>accus = [[] for i in range(3)]
ins = ("abc" for i in range(3))
outs = iter(accus)
while 1:
... out = outs.next()
... out += ins.next()
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
StopIteration

In idiomatic Python that becomes
>>>accus = [[] for i in range(3)]
ins = ("abc" for i in range(3))
outs = iter(accus)
from itertools import izip
for out, in_ in izip(outs, ins):
... out += in_
...
>>>accus
[['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
Peter
Hum, this example seems like a special case not really appropriate for my
needs. Let me make my problem a little more precise. The objects I'll want
to iterate through will always contain some floats. Very often, I guess
they will be numpy.ndarray instances, but they can be something else as
well. For instance, I will have to deal with arrays having internal
symmetries (crystallograph ic datasets). The most efficient thing to do
with those is save only the unique values and keep track of the symmetry
operations needed to extract other values.

A 1d examples: I have a class which represents a unit cell
which has the additional mirror symmetry in the middle of the cell. Say
C is an instance of this class representing data on a 50-long array. Only
25 datum will be stored in C, and the class takes care of giving the value
of C[0] if C[49] is asked, C[1] for C[48], and so on. Since crystals are
periodic, the translational symmetry can also be managed (C[-1] == C[49]
== C[0], C[-2] == C[48] == C[1]...). In any case, the user of this object
need not know how the data is stored: for him, C is just a funny
array-like object defined from -infinity to +infinity on a 1-D lattice.

Now, I want to do simple math operations on the data in C. Doing a loop
from 0 to 49 would loop twice through the actual data. In this
context, an iterator is perfect since it can take care internally of going
through the data only once, so it would be great to access _AND MODIFY_
data over which I iterate.

I now realize I don't know how to do that with numpy.ndarray either. It
looks like the only way I can modify the content of an array is by using
the [] notation (that is, in random access). For instance, the
following will not change the state of a:

import numpy
a = numpy.array([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]])

for c in a.flat
c += 2.

Of course, I know that a += .2 would be alright, but this is not general
enough for more complicated classes.

So I guess my problem is worst than I thought.

Thanks anyway for your help!

Pierre
Jul 26 '06 #4
Pierre Thibault wrote:
Hum, this example seems like a special case not really appropriate for my
needs. Let me make my problem a little more precise. The objects I'll want
to iterate through will always contain some floats. Very often, I guess
they will be numpy.ndarray instances, but they can be something else as
well. For instance, I will have to deal with arrays having internal
symmetries (crystallograph ic datasets). The most efficient thing to do
with those is save only the unique values and keep track of the symmetry
operations needed to extract other values.

A 1d examples: I have a class which represents a unit cell
which has the additional mirror symmetry in the middle of the cell. Say
C is an instance of this class representing data on a 50-long array. Only
25 datum will be stored in C, and the class takes care of giving the value
of C[0] if C[49] is asked, C[1] for C[48], and so on. Since crystals are
periodic, the translational symmetry can also be managed (C[-1] == C[49]
== C[0], C[-2] == C[48] == C[1]...). In any case, the user of this object
need not know how the data is stored: for him, C is just a funny
array-like object defined from -infinity to +infinity on a 1-D lattice.

Now, I want to do simple math operations on the data in C. Doing a loop
from 0 to 49 would loop twice through the actual data. In this
context, an iterator is perfect since it can take care internally of going
through the data only once, so it would be great to access _AND MODIFY_
data over which I iterate.
That would not only be nice but crucial to the integrity of your data. You'd
have to explicitly forbid operations on individual cells as applying an
operation to a single cell would change two or more cells, depending of the
kind of symmetry.
I now realize I don't know how to do that with numpy.ndarray either. It
looks like the only way I can modify the content of an array is by using
the [] notation (that is, in random access). For instance, the
following will not change the state of a:

import numpy
a = numpy.array([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]])

for c in a.flat
c += 2.

Of course, I know that a += .2 would be alright, but this is not general
enough for more complicated classes.

So I guess my problem is worst than I thought.
Indeed, but I don't think it would be easier in C++...

Peter

Jul 26 '06 #5
Pierre Thibault, some people here surely know enough Python (and C++)
to solve your problem, but often the problem is understanding the
problem. I have understood your problem just partially, so the
following are just ideas.

First of all I suggest you to use a normal Python list to keep the
data, and later modify the code to use an array if it is too much slow
or if you need arrays to do some special things, like plotting, etc.
Developing using normal Python lists is a bit simpler.

With python you can redefine the __getitem__ and __setitem__ of an
object according to its crystal symmetries. Then you can define some
method like iterkeys that yields (with yield) the only indexes that the
symmetry allows to be set.

Then you can iterate on those indexes and update the values in the list
attribute.

Bye,
bearophile

Jul 26 '06 #6

Pierre Thibault wrote:
Hello!

I am currently trying to port a C++ code to python, and I think I am stuck
because of the very different behavior of STL iterators vs python
iterators. What I need to do is a simple arithmetic operations on objects
I don't know. In C++, the method doing that was a template, and all that
was required is that the template class has an iterator conforming to the
STL forward iterator definition. Then, the class would look like:
<SNIP>
Then I discovered python and wanted to use all its goodies. I thought it
would be easy to do the same thing but I can't: the iterator mechanism is
read-only, right? So it does no make sense to write:

io1 = iter(object1)
io2 = iter(object2)

try:
while 1:
io1.next() += io2.next()
except StopIteration:
pass

That won't work:
SyntaxError: can't assign to function call

Here is my question: how could I do that and retain enough generallity?

Thanks!

Pierre
Pierre,
You should be able to write
io1.next().para m += io2.next().para m
If iter(object1) and iter(object2) both return classes or instances
with the appropriate parameter.
Here is what I was thinking of:
class ParamHolder(obj ect):
def __init__(self, n):
self.param = n

class C1(object):
def __init__(self,m ):
self.value = [ParamHolder(n) for n in range(m)]
def __getitem__(sel f, p):
return self.value[p]

obj1 = C1(5)
obj2 = C1(5)

io1 = iter(obj1)
io2 = iter(obj2)

print "obj1 pre loop",[r.param for r in obj1.value]

try:
while 1:
io1.next().para m += io2.next().para m
except StopIteration:
pass

print "obj1 post loop",[r.param for r in obj1.value]

- Paddy.

Jul 26 '06 #7

Paddy wrote:
Pierre Thibault wrote:
Hello!

I am currently trying to port a C++ code to python, and I think I am stuck
because of the very different behavior of STL iterators vs python
iterators. What I need to do is a simple arithmetic operations on objects
I don't know. In C++, the method doing that was a template, and all that
was required is that the template class has an iterator conforming to the
STL forward iterator definition. Then, the class would look like:
<SNIP>
Then I discovered python and wanted to use all its goodies. I thought it
would be easy to do the same thing but I can't: the iterator mechanism is
read-only, right? So it does no make sense to write:

io1 = iter(object1)
io2 = iter(object2)

try:
while 1:
io1.next() += io2.next()
except StopIteration:
pass

That won't work:
SyntaxError: can't assign to function call

Here is my question: how could I do that and retain enough generallity?

Thanks!

Pierre

Pierre,
You should be able to write
io1.next().para m += io2.next().para m
If iter(object1) and iter(object2) both return classes or instances
with the appropriate parameter.
Here is what I was thinking of:
class ParamHolder(obj ect):
def __init__(self, n):
self.param = n

class C1(object):
def __init__(self,m ):
self.value = [ParamHolder(n) for n in range(m)]
def __getitem__(sel f, p):
return self.value[p]

obj1 = C1(5)
obj2 = C1(5)

io1 = iter(obj1)
io2 = iter(obj2)

print "obj1 pre loop",[r.param for r in obj1.value]

try:
while 1:
io1.next().para m += io2.next().para m
except StopIteration:
pass

print "obj1 post loop",[r.param for r in obj1.value]

- Paddy.
I don't like the try/except code and would write something like the
following:
>>obj1 = C1(5)
obj2 = C1(5)
from itertools import izip
for x,y in izip(obj1, obj2):
.... x.param += y.param
....
>>print "obj1 post for loop",[r.param for r in obj1.value]
obj1 post for loop [0, 2, 4, 6, 8]
>>>
- Paddy.

Jul 26 '06 #8
On Wed, 26 Jul 2006 16:11:48 -0700, Paddy wrote:
>
Paddy wrote:
>Pierre Thibault wrote:
Hello!

I am currently trying to port a C++ code to python, and I think I am stuck
because of the very different behavior of STL iterators vs python
iterators. What I need to do is a simple arithmetic operations on objects
I don't know. In C++, the method doing that was a template, and all that
was required is that the template class has an iterator conforming to the
STL forward iterator definition. Then, the class would look like:
<SNIP>
Then I discovered python and wanted to use all its goodies. I thought it
would be easy to do the same thing but I can't: the iterator mechanism is
read-only, right? So it does no make sense to write:

io1 = iter(object1)
io2 = iter(object2)

try:
while 1:
io1.next() += io2.next()
except StopIteration:
pass

That won't work:
SyntaxError: can't assign to function call

Here is my question: how could I do that and retain enough generallity?

Thanks!

Pierre

Pierre,
You should be able to write
io1.next().para m += io2.next().para m
If iter(object1) and iter(object2) both return classes or instances
with the appropriate parameter.
Here is what I was thinking of:
class ParamHolder(obj ect):
def __init__(self, n):
self.param = n

class C1(object):
def __init__(self,m ):
self.value = [ParamHolder(n) for n in range(m)]
def __getitem__(sel f, p):
return self.value[p]

obj1 = C1(5)
obj2 = C1(5)

io1 = iter(obj1)
io2 = iter(obj2)

print "obj1 pre loop",[r.param for r in obj1.value]

try:
while 1:
io1.next().para m += io2.next().para m
except StopIteration:
pass

print "obj1 post loop",[r.param for r in obj1.value]

- Paddy.

I don't like the try/except code and would write something like the
following:
>>>obj1 = C1(5)
obj2 = C1(5)
from itertools import izip
for x,y in izip(obj1, obj2):
... x.param += y.param
...
>>>print "obj1 post for loop",[r.param for r in obj1.value]
obj1 post for loop [0, 2, 4, 6, 8]
>>>>

- Paddy.
Thanks Paddy,

This looks like the closest thing to what I wanted, though the need for
this "param" makes it not very general to my taste. Besides, this method
would not work with ndarrays anyways.

Thanks again for taking the time to answer,

Pierre

Jul 27 '06 #9
On Wed, 26 Jul 2006 20:59:12 +0200, Peter Otten wrote:
Pierre Thibault wrote:
>Hum, this example seems like a special case not really appropriate for my
needs. Let me make my problem a little more precise. The objects I'll want
to iterate through will always contain some floats. Very often, I guess
they will be numpy.ndarray instances, but they can be something else as
well. For instance, I will have to deal with arrays having internal
symmetries (crystallograph ic datasets). The most efficient thing to do
with those is save only the unique values and keep track of the symmetry
operations needed to extract other values.

A 1d examples: I have a class which represents a unit cell
which has the additional mirror symmetry in the middle of the cell. Say
C is an instance of this class representing data on a 50-long array. Only
25 datum will be stored in C, and the class takes care of giving the value
of C[0] if C[49] is asked, C[1] for C[48], and so on. Since crystals are
periodic, the translational symmetry can also be managed (C[-1] == C[49]
== C[0], C[-2] == C[48] == C[1]...). In any case, the user of this object
need not know how the data is stored: for him, C is just a funny
array-like object defined from -infinity to +infinity on a 1-D lattice.

Now, I want to do simple math operations on the data in C. Doing a loop
from 0 to 49 would loop twice through the actual data. In this
context, an iterator is perfect since it can take care internally of going
through the data only once, so it would be great to access _AND MODIFY_
data over which I iterate.

That would not only be nice but crucial to the integrity of your data. You'd
have to explicitly forbid operations on individual cells as applying an
operation to a single cell would change two or more cells, depending of the
kind of symmetry.
>I now realize I don't know how to do that with numpy.ndarray either. It
looks like the only way I can modify the content of an array is by using
the [] notation (that is, in random access). For instance, the
following will not change the state of a:

import numpy
a = numpy.array([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]])

for c in a.flat
c += 2.

Of course, I know that a += .2 would be alright, but this is not general
enough for more complicated classes.

So I guess my problem is worst than I thought.

Indeed, but I don't think it would be easier in C++...

Peter
Well, no, C++ is better in this case because the thing you iterate over is
a generalized pointer, which can be dereferenced to get access to the
memory. So in other word, iterator.next() (in python) is a copy, while
*iterator (in C++) is a reference.

Thanks anyway for your comments!

Pierre

Jul 27 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

9
2540
by: Jess Austin | last post by:
hi, I like the way that Python does lists, and I love the way it does iterators. But I've decided I don't like what it does with iterators of lists. Lists are supposed to be mutable sequences, but try to use an iterator of a list that you're mutating and watch it all fall to pieces. That is, if you change the length of a section of the list through which the iterator has already passed, it will lose track of where it is. I think...
7
1951
by: marduk | last post by:
I have a weird request. I want to be able to say def myvalues(): while True: # stuff that determines a new somevalue yield somevalue x = "Hello, %s, this is a %s with %s and %s on top of %s" % myvalues()
5
2393
by: Carlos Ribeiro | last post by:
Hello all, I'm posting this to the list with the intention to form a group of people interested in this type of solution. I'm not going to spam the list with it, unless for occasional and relevant announcements. If you're interested, drop me a note. But if for some reason you think that this discussion is fine here at the c.l.py, please let me know. ** LONG POST AHEAD **
2
1435
by: dgront | last post by:
Greetings! I believe someone can spare me a minute and give me some ideas. Once upon a time I had a C program: double propert; char symb; char* descript; But now I want to make it in C++. So:
11
6579
by: Grasshopper | last post by:
Hi, I am automating Access reports to PDF using PDF Writer 6.0. I've created a DTS package to run the reports and schedule a job to run this DTS package. If I PC Anywhere into the server on where the job is running, the job runs sucessfully, PDF files got generated, everything is good. If I scheduled the job to run at the time that I am not logged into the server, Access is not able to print to the printer. The error is pretty...
2
2349
by: Wavemaker | last post by:
I've been playing with C# v2.0 today, and having quite a bit of fun. The new version has added iterators. The iterators are coded directly into the class to be iterated. For example: public IEnumerable<int> Visit(SomeVisitor visitor) { int position = 0; for(int i = 0; i < Count; i++) {
2
2818
by: Thormod Johansen | last post by:
Hi, I have just read the article about iterators at http://www.oreillynet.com/pub/a/network/2005/10/18/what-is-iterator-in-c-plus-plus.html?page=last and I am wondering about what is ment by the sentence "list does not provide random access iterators, though, not because it's impossible to implement, but because it can't be implemented efficiently." As I understand it, a vector is a single linked list and list is a double linked list....
3
2147
by: n.torrey.pines | last post by:
Hi I work with a nested tree-like data structure template (that happens to be a tuple of vectors of tuples of trees of something, with different tuple elements having different types) I need to define a variety of ELEMENTWISE operations, like a. increment all leaves (unary) b. match two data structures (binary)
3
1535
by: Jess | last post by:
Hello, Iterators are typically put into five different categories, namely input iterator, output iterator, forward iterator, bidirectional iterator and random iterator. The differences come from the requirements each kind of iterator has to meet. Therefore, I think the five categories are kind of conceptual thing, i.e. they are not really C++ structs/classes etc, is this correct? There are some functions that return iterators. For...
0
7946
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8253
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8374
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
5739
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5411
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
3867
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
3903
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2389
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
0
1216
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.