473,570 Members | 2,945 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Problem with user-defined IO streambuf for encoding purposes

Hi everyone,

I'm having some difficulty with the following piece of code. I have
stripped it to it's bare minimum to demonstrate the problem at hand.

Compiler: MS Visual C++ 2005 Express Edition (similar problem arises
with 2008)

Runtime Library: All multi-threaded variants have been seen to fail
[DLL/Static] | [Debug|Release]

Purpose: define a user defined stream buffer that processes each
incoming character and translates it to an encoded value. Place the
encoded character into a local buffer for output. The most simple case
would be an encoder that translates each character to upper case. A
more complicated case would be an encoder that encodes plain-text to
base64 encoding (this is not a one-to-one character encoding, it's a 3
character to 4character encoding, this is why an internal buffer is
needed)

Problem: The code throws an "Unhandled exception at 0x00529bcc in
hsl_d.exe: 0xC0000005: Access violation reading location 0x00000000."
after the "encoderbuf::un derflow c = 51" character '3' has been read.
This basically tells me that deep down in the internals of the IO
library something is being dereferenced that is not allocated.

Question(s):
1) Does this occur with other compilers? (requires testing)
2) Is this a problem with the IO library? (unlikely I think)
3) Am I doing something stupid? (more than likely) And if so what?

References:
C++ Standard Library - A Tutorial and Reference (13.13.3 User-Defined
Stream Buffers)
Code:

#include <iostream>
#include <sstream>

class encoderbuf : public std::streambuf {

char mCharBuf[128];
int mBufLen;
int mBufPos;
public:
//--------------------------------------------------------------
/** default constructor */
encoderbuf()
: std::streambuf( )
, mBufLen(0)
, mBufPos(0)
{
}

//--------------------------------------------------------------
/** outgoing data */
virtual int_type underflow () {
int_type c = EOF;
if (mBufPos < mBufLen) {
c = mCharBuf[mBufPos++];
}
std::cout << "encoderbuf::un derflow c = " << c << std::endl;

return c;
}

//--------------------------------------------------------------
/** incoming data */
virtual int_type overflow (int_type c) {
std::cout << "encoderbuf::ov erflow c = " << c << std::endl;
//TODO: do encoding here
mCharBuf[mBufLen++] = c;
return c;
}
};

//--------------------------------------------------------------
int main (int argc, char ** argv) {
encoderbuf buf;
std::iostream iostr(&buf);
iostr << 12345 << std::endl;
std::stringstre am sstr;
iostr >sstr.rdbuf() ; // EXCEPTION AT PROCESSING CHARACTER '3'

std::string str = sstr.str();
std::cout << "main str = " << str << std::endl;
}
Output:
encoderbuf::ove rflow c = 49
encoderbuf::ove rflow c = 50
encoderbuf::ove rflow c = 51
encoderbuf::ove rflow c = 52
encoderbuf::ove rflow c = 53
encoderbuf::ove rflow c = 10
encoderbuf::und erflow c = 49
encoderbuf::und erflow c = 50
encoderbuf::und erflow c = 51
popup: Unhandled exception at 0x00529bcc in hsl_d.exe: 0xC0000005:
Access violation reading location 0x00000000.
Dec 12 '07 #1
10 3331
hs********@gmai l.com wrote:
Hi everyone,

I'm having some difficulty with the following piece of code. I have
stripped it to it's bare minimum to demonstrate the problem at hand.

Compiler: MS Visual C++ 2005 Express Edition (similar problem arises
with 2008)

Runtime Library: All multi-threaded variants have been seen to fail
[DLL/Static] | [Debug|Release]

Purpose: define a user defined stream buffer that processes each
incoming character and translates it to an encoded value. Place the
encoded character into a local buffer for output. The most simple case
would be an encoder that translates each character to upper case. A
more complicated case would be an encoder that encodes plain-text to
base64 encoding (this is not a one-to-one character encoding, it's a 3
character to 4character encoding, this is why an internal buffer is
needed)

Problem: The code throws an "Unhandled exception at 0x00529bcc in
hsl_d.exe: 0xC0000005: Access violation reading location 0x00000000."
after the "encoderbuf::un derflow c = 51" character '3' has been read.
This basically tells me that deep down in the internals of the IO
library something is being dereferenced that is not allocated.

Question(s):
1) Does this occur with other compilers? (requires testing)
2) Is this a problem with the IO library? (unlikely I think)
3) Am I doing something stupid? (more than likely) And if so what?

References:
C++ Standard Library - A Tutorial and Reference (13.13.3 User-Defined
Stream Buffers)
Code:

#include <iostream>
#include <sstream>

class encoderbuf : public std::streambuf {

char mCharBuf[128];
int mBufLen;
int mBufPos;
public:
//--------------------------------------------------------------
/** default constructor */
encoderbuf()
: std::streambuf( )
, mBufLen(0)
, mBufPos(0)
{
}

//--------------------------------------------------------------
/** outgoing data */
virtual int_type underflow () {
int_type c = EOF;
if (mBufPos < mBufLen) {
c = mCharBuf[mBufPos++];
}
std::cout << "encoderbuf::un derflow c = " << c << std::endl;

return c;
}

//--------------------------------------------------------------
/** incoming data */
virtual int_type overflow (int_type c) {
std::cout << "encoderbuf::ov erflow c = " << c << std::endl;
//TODO: do encoding here
mCharBuf[mBufLen++] = c;
Most likely you meant
mCharBuf[mBufPos++] = c;
here. mBufPos, not mBufLen.
return c;
}
};

//--------------------------------------------------------------
int main (int argc, char ** argv) {
encoderbuf buf;
std::iostream iostr(&buf);
iostr << 12345 << std::endl;
std::stringstre am sstr;
iostr >sstr.rdbuf() ; // EXCEPTION AT PROCESSING CHARACTER '3'

std::string str = sstr.str();
std::cout << "main str = " << str << std::endl;
}
Output:
encoderbuf::ove rflow c = 49
encoderbuf::ove rflow c = 50
encoderbuf::ove rflow c = 51
encoderbuf::ove rflow c = 52
encoderbuf::ove rflow c = 53
encoderbuf::ove rflow c = 10
encoderbuf::und erflow c = 49
encoderbuf::und erflow c = 50
encoderbuf::und erflow c = 51
popup: Unhandled exception at 0x00529bcc in hsl_d.exe: 0xC0000005:
Access violation reading location 0x00000000.


--
Jim Langston
ta*******@rocke tmail.com
Dec 12 '07 #2
hs********@gmai l.com wrote:
>
Has anyone tried running this code under Linux? I don't have a Linux
machine handy at the moment, but I would be curious to know if this is
strictly a MS issue.
It crashes.
Dec 12 '07 #3
On Dec 12, 9:34 am, hsmit.h...@gmai l.com wrote:
I'm having some difficulty with the following piece of code. I have
stripped it to it's bare minimum to demonstrate the problem at hand.

Compiler: MS Visual C++ 2005 Express Edition (similar problem arises
with 2008)

Runtime Library: All multi-threaded variants have been seen to fail
[DLL/Static] | [Debug|Release]

Purpose: define a user defined stream buffer that processes each
incoming character and translates it to an encoded value. Place the
encoded character into a local buffer for output. The most simple case
would be an encoder that translates each character to upper case. A
more complicated case would be an encoder that encodes plain-text to
base64 encoding (this is not a one-to-one character encoding, it's a 3
character to 4character encoding, this is why an internal buffer is
needed)

Problem: The code throws an "Unhandled exception at 0x00529bcc in
hsl_d.exe: 0xC0000005: Access violation reading location 0x00000000."
after the "encoderbuf::un derflow c = 51" character '3' has been read.
This basically tells me that deep down in the internals of the IO
library something is being dereferenced that is not allocated.

Question(s):
1) Does this occur with other compilers? (requires testing)
2) Is this a problem with the IO library? (unlikely I think)
3) Am I doing something stupid? (more than likely) And if so what?

References:
C++ Standard Library - A Tutorial and Reference (13.13.3 User-Defined
Stream Buffers)

Code:

#include <iostream>
#include <sstream>

class encoderbuf : public std::streambuf {

char mCharBuf[128];
int mBufLen;
int mBufPos;
public:
//--------------------------------------------------------------
/** default constructor */
encoderbuf()
: std::streambuf( )
, mBufLen(0)
, mBufPos(0)
{
}

//--------------------------------------------------------------
/** outgoing data */
virtual int_type underflow () {
int_type c = EOF;
if (mBufPos < mBufLen) {
c = mCharBuf[mBufPos++];
}
std::cout << "encoderbuf::un derflow c = " << c << std::endl;
return c;
}
Attention: this function does not meet the requirements for
underflow. Underflow must return the character, leaving it in
the stream. This normally involves at least a one character
buffer. In your case, of course, you've got a longer buffer,
so you could just use that:

int_type c = EOF ;
if ( mBufPos != mBufLen ) {
setg( mCharBuf, mCharBuf + mBufPos, mCharBuf + mBufLen ) ;
c = mCharBuf[ mBufPos ] ;
mBufPos = mBufLen ;
}
return c ;

. Although the problem being addressed is somewhat different,
you'll find a short discussion concerning the requirements of
underflow and overflow in my articles on filtering streambuf's
(http://kanze.james.neuf.fr/articles-en.html).
//--------------------------------------------------------------
/** incoming data */
virtual int_type overflow (int_type c) {
std::cout << "encoderbuf::ov erflow c = " << c << std::endl;
//TODO: do encoding here
mCharBuf[mBufLen++] = c;
return c;
}
};
//--------------------------------------------------------------
int main (int argc, char ** argv) {
encoderbuf buf;
std::iostream iostr(&buf);
iostr << 12345 << std::endl;
std::stringstre am sstr;
iostr >sstr.rdbuf() ; // EXCEPTION AT PROCESSING CHARACTER '3'
std::string str = sstr.str();
std::cout << "main str = " << str << std::endl;
}
Output:
encoderbuf::ove rflow c = 49
encoderbuf::ove rflow c = 50
encoderbuf::ove rflow c = 51
encoderbuf::ove rflow c = 52
encoderbuf::ove rflow c = 53
encoderbuf::ove rflow c = 10
encoderbuf::und erflow c = 49
encoderbuf::und erflow c = 50
encoderbuf::und erflow c = 51
popup: Unhandled exception at 0x00529bcc in hsl_d.exe: 0xC0000005:
Access violation reading location 0x00000000.
I get the correct results with my version of underflow. Both
with g++ (under Linux) and VC++ (under Windows).

What's probably happening is that the implementation, having
read the character with underflow, increments the get pointer
(gptr()). Which is null, since you've never set it. The next
time around, it compares this pointer with egptr(), finds that
they aren't equal, and accesses through it directly. (This is,
at least, what happens with g++ under Solaris. At least, if the
input routing is using sgetn, this is what happens.)

The normal way of implementing input in a streambuf is to
override underflow, using a buffer of at least one character.
(The reason for this is to allow simple and direct support for
putback.)

--
James Kanze (GABI Software) email:ja******* **@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientier ter Datenverarbeitu ng
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Dec 12 '07 #4
Thank you James for all the useful info. Looks like I've got some
serious reading tonight.

Before I read your response I got my code to do what I wanted. It was
along the lines of what you described. It's still a work in progress.
Here is the result (comments/refinements/improvements of this code are
welcome, in fact they would very much be appreciatted).

Expand|Select|Wrap|Line Numbers
  1.  
  2. #include <iostream>
  3. #include <sstream>
  4.  
  5. //--------------------------------------------------------------
  6. /**
  7. General purpose buffered filter / encoder.
  8. @todo: still requires testing and refinement.
  9. */
  10. class encoderbuf : public std::streambuf {
  11.  
  12. std::stringbuf mBuf;
  13. char mIBuf[3]; //TODO: make this dynamic
  14.  
  15. public:
  16. //--------------------------------------------------------------
  17. /** default constructor */
  18. encoderbuf() {
  19. mBuf.pubsetbuf(mIBuf, sizeof(mIBuf));
  20. setg(mIBuf, mIBuf, mIBuf+sizeof(mIBuf));
  21. }
  22.  
  23. private:
  24. //--------------------------------------------------------------
  25. /** default encoder routine - does nothing */
  26. virtual void                  encode (int_type c) {
  27. *gptr() = c;
  28. gbump(1);
  29. }
  30.  
  31. //--------------------------------------------------------------
  32. /** flushes the buffered data to the final destination */
  33. int                            flush () {
  34. int_type c = mBuf.sbumpc();
  35. if (c == EOF) {
  36. return EOF;
  37. }
  38. while (c != EOF) {
  39. encode(c);
  40. if (gptr() >= egptr()) {
  41. break;
  42. }
  43. c = mBuf.sbumpc();
  44. }
  45. setg(mIBuf, mIBuf, gptr());
  46.  
  47. return 0;
  48. }
  49.  
  50. //--------------------------------------------------------------
  51. /** flush the buffered data to output */
  52. virtual int                   sync () {
  53. return flush();
  54. }
  55.  
  56.  
  57. //--------------------------------------------------------------
  58. /** buffer the incoming data */
  59. virtual int_type              overflow (int_type c) {
  60. return mBuf.sputc(c);
  61. }
  62.  
  63. //--------------------------------------------------------------
  64. /** reset the internal input buffers and flush the buffered
  65. data to output
  66. */
  67. virtual int_type              underflow () {
  68.  
  69. memset(mIBuf, 'x', sizeof(mIBuf));
  70. setg(mIBuf, mIBuf, mIBuf+sizeof(mIBuf));
  71.  
  72. if (flush() == EOF) {
  73. return EOF;
  74. }
  75.  
  76. return ((unsigned char)(*gptr()));
  77. }
  78. };
  79.  
  80. //--------------------------------------------------------------
  81. /**
  82. Example encoder
  83. */
  84. class uppercasebuf : public encoderbuf {
  85.  
  86. public:
  87. //--------------------------------------------------------------
  88. /** upper case encoder */
  89. virtual void                  encode (int_type c) {
  90. *gptr() = toupper(c);
  91. gbump(1);
  92. }
  93. };
  94.  
  95. //--------------------------------------------------------------
  96. int main (int argc, char ** argv) {
  97. uppercasebuf buf;
  98. std::iostream iostr(&buf);
  99. iostr << "abcdef";
  100. iostr << "123HIG";
  101. iostr << "aabb" << std::endl;
  102. std::string str;
  103. iostr >str;
  104. std::cout << "test_encoderbuf str = " << str << std::endl;
  105. }
  106.  
  107.  
  108.  
Cheers,

Hans Smit
Dec 12 '07 #5
On Dec 12, 9:55 am, "Alf P. Steinbach" <al...@start.no wrote:
* Jim Langston:
[...]
std::stringstre am sstr;
iostr >sstr.rdbuf() ; // EXCEPTION AT PROCESSING CHARACTER '3'
The call to rdbuf() looks suspicious. Since I try to avoid
the unclean iostreams as much as possible I don't know. But
at least it sort of sounds wrong.
It's the usual way of testing new, user-defined streams. It's
true that it's somewhat surprising, since it's a >operator
that doesn't parse anything, but since it's designed mainly for
debugging.

Writing your own streambuf isn't very difficult, but you do have
to respect the contract for the virtual functions you implement.
In the case of underflow(), the standard says very clearly that
unless it returns EOF, it must return "the first character of
the pending sequence, without moving the input sequence position
past it." It's possible to do so without using a buffer, but
that requires also overriding uflow() (whose default
implementation increments the pointer into the buffer), and
pbackfail() (since the implementation has to support at least
one character pushback). This has been discussed in published
articles---I know because I wrote them.

And of course, if you think that iostream is unclean, you're
free to propose something better. The original iostream, by
Jerry Schwarz, is in impressively elegant solution to the
contraints he had at that time. IMHO, the standards committee
didn't improve it, and of course, if we were designing it from
scratch today, we'd do some things differently, but I've not
seen any concrete alternatives that are better.

--
James Kanze (GABI Software) email:ja******* **@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientier ter Datenverarbeitu ng
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Dec 12 '07 #6
On 2007-12-12 12:10:35 -0500, hs********@gmai l.com said:
Method names such as
"showmanyc"
are a little unclear when first working with this library, i.e. I kept
seeing
"show many c" for some strange reason.
There's a footnote in the standard that addresses this: "The morphemes
of showmanyc are es-how-many-see", not "show-manic".

--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
Standard C++ Library Extensions: a Tutorial and Reference
(www.petebecker.com/tr1book)

Dec 12 '07 #7
On Dec 12, 7:22 pm, Pete Becker <p...@versatile coding.comwrote :
On 2007-12-12 12:10:35 -0500, hsmit.h...@gmai l.com said:
Method names such as
"showmanyc"
are a little unclear when first working with this library, i.e. I kept
seeing
"show many c" for some strange reason.

There's a footnote in the standard that addresses this: "The morphemes
of showmanyc are es-how-many-see", not "show-manic".

--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
Standard C++ Library Extensions: a Tutorial and Reference
(www.petebecker.com/tr1book)
That footnote is in quite a few references. The fact that a footnote
had to be issued for this validates my point that some of the naming
conventions in this library are non-intuitive. Nevertheless, the power
and heritage of this library in-validates any comments I have about
it ;-)
Dec 12 '07 #8
On Dec 12, 4:33 pm, hsmit.h...@gmai l.com wrote:
Before I read your response I got my code to do what I wanted.
It was along the lines of what you described. It's still a
work in progress. Here is the result
(comments/refinements/improvements of this code are welcome,
in fact they would very much be appreciatted).
Just some quick comments:
[code]
#include <iostream>
#include <sstream>
//--------------------------------------------------------------
/**
General purpose buffered filter / encoder.
@todo: still requires testing and refinement.
*/
class encoderbuf : public std::streambuf {
std::stringbuf mBuf;
char mIBuf[3]; //TODO: make this dynamic
You can use std::vector< char >, and skip the stringbuf
entirely.
public:
//--------------------------------------------------------------
/** default constructor */
encoderbuf() {
mBuf.pubsetbuf( mIBuf, sizeof(mIBuf));
Note that the behavior of stringbuf::setb uf is implementation
defined, and that an implementation is not required to respect
it.
setg(mIBuf, mIBuf, mIBuf+sizeof(mI Buf));
And that this statement basically means that you have two
different class instances (the base class and you mBuf member)
sharing the same buffer, in an unspecified manner.
}
private:
//--------------------------------------------------------------
/** default encoder routine - does nothing */
virtual void encode (int_type c) {
*gptr() = c;
gbump(1);
Uses the buffer defined in the base class. I'd use the
std::vector, and then something like:

mBuffer.push_ba ck( c ) ;

Since you don't seem to be supporting buffering on input,
there's no reason to touch the put pointers. And you definitly
shouldn't be messing with the get pointers on output; at the
very most, you might do something like:
setg( &mBuffer[ 0 ],
&mBuffer[ 0 ] + gptr() - eback(),
&mBuffer[ 0 ] + mBuffer.size() ) ;
(but you could just as well do this in underflow()).
}
//--------------------------------------------------------------
/** flushes the buffered data to the final destination */
int flush () {
int_type c = mBuf.sbumpc();
if (c == EOF) {
return EOF;
}
while (c != EOF) {
encode(c);
Note that encode manipulates mIBuf, which you passed to mBuf.
If your code works, it is probably because mBuf is ignoring the
setbuf.
if (gptr() >= egptr()) {
break;
}
c = mBuf.sbumpc();
}
setg(mIBuf, mIBuf, gptr());
return 0;
}
//--------------------------------------------------------------
/** flush the buffered data to output */
virtual int sync () {
return flush();
}
//--------------------------------------------------------------
/** buffer the incoming data */
virtual int_type overflow (int_type c) {
return mBuf.sputc(c);
}
//--------------------------------------------------------------
/** reset the internal input buffers and flush the buffered
data to output
*/
virtual int_type underflow () {
memset(mIBuf, 'x', sizeof(mIBuf));
setg(mIBuf, mIBuf, mIBuf+sizeof(mI Buf));
if (flush() == EOF) {
return EOF;
}
return ((unsigned char)(*gptr())) ;
}
};
In fact, if I've understood at all, you're really using two
different buffers, mBuf and mIBuf, and transferring between them
in flush. As long as you are calling encode for each individual
character, and not on the complete buffer, I wouldn't bother.
Use an std::vector< char as the buffer: overflow simply calls
encode, which does a push_back on whatever it generates. (I'd
provide a protected function for this, rather than make the
std::vector directly accessible.) Underflow simply updates the
get pointers and returns *gptr() if gptr() != egptr(), e.g.:

int_type
encoderbuf::und erflow()
{
setg( &mBuffer[ 0 ],
&mBuffer[ 0 ] + gptr() - eback(),
&mBuffer[ 0 ] + mBuffer.size() ) ;
return gptr() == egptr()
? traits_type::eo f()
: traits_type::to _int_type( *gptr() ) ;
}

In this particular case, I'd also ask myself if a streambuf is
really the correct solution. On the whole, for memory to memory
translations, I'd rather go with a custom insertion_itera tor,
invoked as the destination of std::copy, e.g.:

std::copy( source.being(), source.end(),
EncodingInserte r( dest ) ) ;

(If the encoding is one to one, of course, all you need is a
function and std::transform. )

An insertion iterator is an output iterator (in other words, not
an iterator at all), which means that many of the constraints
normally present on iterators are absent. Just be aware that it
may be (and in fact will be) copied, so if it needs modifiable
internal state, you have to be careful.

--
James Kanze (GABI Software) email:ja******* **@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientier ter Datenverarbeitu ng
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Dec 13 '07 #9
James, you have given me so much to chew on, I am deeply indebted.

Before I read your last post, I had finally gotten a reasonably
generic encoderbuf class implemented, there are still a few kinks in
it and I will continue working on this today. I will see if I can
integrate a few of your ideas, since these "kinks" I refered to make
me feel like I am doing something terribly wrong (even though it
works). I need to investigate further before I can properly articulate
this additional problem.

Your insertion iterator idea is something I will be looking into
sometime later (more as an excercies in understanding than anything
else). I am an old newbie to the STL library. Worked with it quite a
bit 7-9 years ago, put it aside for some time, and started working
with it again 6 months ago. I am finally discovering the beautiful
intracies of this remarkable library.

I will post my "semi-final" solution when it's ready.
Dec 14 '07 #10

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

Similar topics

10
3907
by: Hautzendorfer | last post by:
Hello, I'm currently working on some printing stuff: I have to print out several .xml files using a stylesheet. Therefor I choose the Internetexplorer PlugIn via SHDocVW. My problem: After sending the print command via ExecWB for the first .xml document either the preview or the printer selection window occurs (depending on the passed...
0
3315
by: Marko | last post by:
Please, can anyone help me... I have problem with VisualStudio.NET instalation: First step is OK (framework...), but when instalation of .NET begin, after some time I get message "INSTALATION FAILED" and log with: setup.exe: ISetupComponent::Pre/Post/Install() failed in ISetupManager::InstallManagerHelper() setup.exe: Component error...
0
1898
by: Jim | last post by:
I am having some trouble with user controls and would appreciate any input / advice on where to go with this... :) 1. The first problem, and perhaps the root of the others, is that I have several user controls that are inherited user controls, based on one class, which is in turn based on System.Windows.Forms.UserControl. We'll call this...
5
3028
by: | last post by:
Hi, I'm trying to use the cookie munging session handling behaviour of asp.net instead of cookies themselves as I'm finding quite a few people are barring cookies (especially AOL users). If I change the setting in web.config everything seems to work fine as long as I'm using relative paths. The problem is I've got a menuing system that's...
2
2614
by: Joseph Geretz | last post by:
I'm having a credentialing problem in my web application. Actually, I don't think this is an IIS security issue, since I'm able to access the page I'm requesting. However, the executing page itself is not able to access a specific network resource and I just can't figure out why. First of all, let me say this worked fine with IIS running on...
1
3012
by: Kamal Jeet Singh | last post by:
Hi Friends !! I am have facing problem in controlling the dynamically created controls on web page. The problem Scenario is Scenario:- My requirement is to load the web user controls on the web page dynamically. To do this, First I including a web page (MainPage.aspx) and I made form tag to Runat=Server. I included one table tag and also...
6
3790
by: Ammar | last post by:
Dear All, I'm facing a small problem. I have a portal web site, that contains articles, for each article, the end user can send a comment about the article. The problem is: I the comment length is more that 1249 bytes, then the progress bar of the browser will move too slow and then displaying that the page not found!!!! If the message is...
1
417
by: Steven M. | last post by:
Greetings... I need desperate help with my problem. I guess the solution is related in some way with the cookies getting lost in the authentication process working with some web servers. Appreciate any help you could provide. I've created an application that does the authentication process
2
4536
by: Mike Collins | last post by:
I cannot get the correct drop down list value from a drop down I have on my web form. I get the initial value that was loaded in the list. It was asked by someone else what the autopostback was set to...it is set to false. Can someone show me what I am doing wrong and tell me the correct way? Thank you. In the page load event, I am...
6
1624
by: oooobs | last post by:
Hello i have deficulty to deal with cookies in PHP my website is http://kal.am cookies not working and when i tried to print session array i got the following strange output: __utma 238121498.423365001.1211713664.1212127389.1212130222.30 __utmz 238121498.1212127389.29.4.utmcsr=hffar.com|utmccn=(referral)| utmcmd=referral|utmcct=/...
0
7637
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
7950
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. ...
0
8151
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...
1
7702
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
8000
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
6332
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
0
3684
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...
1
2133
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
974
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...

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.