473,320 Members | 1,947 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

a[3} slower than a.x; a.z; a.z

Is it faster to define a vertex structure by .x .y .z members instead
of [3] array?

--
-Gernot
int main(int argc, char** argv) {printf
("%silto%c%cf%cgl%ssic%ccom%c", "ma", 58, 'g', 64, "ba", 46, 10);}

________________________________________
Looking for a good game? Do it yourself!
GLBasic - you can do
www.GLBasic.com
Jul 22 '05 #1
27 1453
> Is it faster to define a vertex structure by .x .y .z members instead
of [3] array?


Not if you use constants for indexing into the array. But .x .y .z might be
more readable.

Niels Dybdahl
Jul 22 '05 #2

"Niels Dybdahl" <nd*@fjern.detteesko-graphics.com> wrote in message
news:41***********************@news.dk.uu.net...
Is it faster to define a vertex structure by .x .y .z members instead
of [3] array?


Not if you use constants for indexing into the array. But .x .y .z might
be
more readable.

Niels Dybdahl


Use the arrays. It allows you to apply transformations using matrix
operations. There shouldn't be much difference of performance between
indexing through constants and member access.

Catalin
Jul 22 '05 #3
Gernot Frisch posted:
Is it faster to define a vertex structure by .x .y .z members instead
of [3] array?

int blah[3];
struct Blah
{
int x;
int y;
int z;
} blah;

Only difference I can fathom:
The implementation may *not* put padding between array elements, while it
*may* put padding between structure elements.

(And before some-one says it... YES I do realize that there wouldn't be
padding between "int"s in anyway! :-P)
-JKop
Jul 22 '05 #4
> Use the arrays. It allows you to apply transformations using matrix
operations. There shouldn't be much difference of performance
between indexing through constants and member access.


Phew. I did the right thing :)
I think a good compiler will perform the +index internally.
Jul 22 '05 #5
JKop wrote:
int blah[3];
struct Blah
{
int x;
int y;
int z;
} blah;

Only difference I can fathom:
The implementation may *not* put padding between array elements, while it
*may* put padding between structure elements.

If you mean an int in an array can not have padding bits, you are wrong.
(And before some-one says it... YES I do realize that there wouldn't be
padding between "int"s in anyway! :-P)

What do you mean?

--
Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #6
If you mean an int in an array can not have padding bits, you are
wrong.

I'm implying that there must not be padding *between* the elements of an
array. The actual elements *themselves* can contain as much padding as they
want.
int blah[3];

int* p_b = blah;

++p_b ;
"p_b" is now *guaranteed* to point to the second element of the array.
struct Blah
{
int a;
int b;
int c;
} blah;
int* p_b = &(blah.a);
++p_b;
"p_b" is *not* guaranteed to point to "blah.b". Why? There may be padding.

(And before some-one says it... YES I do realize that there wouldn't
be padding between "int"s in anyway! :-P)

What do you mean?

The whole thing about padding is so that certain types are aligned a certain
way in memory.

Well... "int" is the natural type for the machine, so all the "int"s that
follow will be nicely aligned without padding.
-JKop
Jul 22 '05 #7

"JKop" <NU**@NULL.NULL> schrieb im Newsbeitrag
news:BW*******************@news.indigo.ie...
If you mean an int in an array can not have padding bits, you are
wrong.

I'm implying that there must not be padding *between* the elements
of an
array. The actual elements *themselves* can contain as much padding
as they
want.
int blah[3];

int* p_b = blah;

++p_b ;
"p_b" is now *guaranteed* to point to the second element of the
array.
struct Blah
{
int a;
int b;
int c;
} blah;
int* p_b = &(blah.a);
++p_b;
"p_b" is *not* guaranteed to point to "blah.b". Why? There may be
padding.


I was thinking additional memory used for alinging ia _always_
appended at the end of the structure, thus p_b == &blah.b. If not, I
really have to think about some code lines now...

Jul 22 '05 #8
JKop wrote:
The implementation may *not* put padding between array elements, while it
*may* put padding between structure elements.

Another difference harkens to the fact that arrays are bastard types.

typedef int BlahArray[3];
struct BlahStruct { int x, y, z; };

BlahArray l, r;
l = r; // ill-formed
BlahStruct l, r;
l = r; // does what is expected.

Further, you can always have constructors and other helpful
members in Blah. This is C++ after all.
Jul 22 '05 #9
Ioannis Vranos wrote:
If you mean an int in an array can not have padding bits, you are wrong.

There can not be padding bits in an array OTHER than those in the types
that the array is made of.

That is: sizeof (T[n]) is always equal to n * sizeof (T).
Jul 22 '05 #10
"Ron Natalie" <ro*@sensor.com> wrote in message
news:41***********************@news.newshosting.co m...
JKop wrote:
The implementation may *not* put padding between array elements, while it
*may* put padding between structure elements.

Another difference harkens to the fact that arrays are bastard types.

typedef int BlahArray[3];
struct BlahStruct { int x, y, z; };

BlahArray l, r;
l = r; // ill-formed
BlahStruct l, r;
l = r; // does what is expected.

Further, you can always have constructors and other helpful
members in Blah. This is C++ after all.


Best of both worlds?

class Vertex
{
private:
int points[3];
public:
int x() const
{
return points[0];
}
int y() const
{
return points[1];
}
int z() const
{
return points[2];
}
};

This way you can access the Vertex by its more readable x,y,z syntax from
the outside, and still implement efficient matrix transformations in member
(or friend) functions. Too bad C# doesn't support property syntax, that
would've been even better.

--
Unforgiven

Jul 22 '05 #11
JKop wrote:
If you mean an int in an array can not have padding bits, you are
wrong.
I'm implying that there must not be padding *between* the elements of an
array. The actual elements *themselves* can contain as much padding as they
want.
int blah[3];

int* p_b = blah;

++p_b ;
"p_b" is now *guaranteed* to point to the second element of the array.
struct Blah
{
int a;
int b;
int c;
} blah;
int* p_b = &(blah.a);
++p_b;
"p_b" is *not* guaranteed to point to "blah.b". Why? There may be padding.


C90 mentions:

"There may also be unnamed padding at the end of a structure or
union, as necessary to achieve the appropriate alignment were the
structure or union to be a member of an array."

C++98 mentions:

"[Note: There might therefore be unnamed padding within a POD-struct
object, but not at its beginning, as necessary to achieve appropriate
alignment. ]"
Now this confuses me. Is the second a redefinition of the first, and
thus leaving it open paddings to be anywhere except the beginning too?

Or is it a restatement of something that already applies in C90 too.

The whole thing about padding is so that certain types are aligned a certain
way in memory.

Well... "int" is the natural type for the machine, so all the "int"s that
follow will be nicely aligned without padding.

The only types guaranteed to have no padding bits are char and unsigned
char.

--
Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #12
> Best of both worlds?

Is there a way of using "union" for this? Just out of curriosity. I
like [0] instead of .x
It's just as you are used to it.
Jul 22 '05 #13
Unforgiven wrote:
Best of both worlds?

class Vertex
{
private:
int points[3];
public:
int x() const
{
return points[0];
}
int y() const
{
return points[1];
}
int z() const
{
return points[2];
}
};

This way you can access the Vertex by its more readable x,y,z syntax
from the outside, and still implement efficient matrix transformations
in member (or friend) functions. Too bad C# doesn't support property
syntax, that would've been even better.

Since it looks like you have C# in mind, here is C++/CLI code for a ref
type with such properties that produces 100% safe IL code (binary
portability):
ref class Vertex
{
private:
cli::array<int> ^points;

public:

Vertex(): points(gcnew array<int>(3)) {}

property int x
{
int get() { return points[0]; }
void set(int x) { points[0] = x; }
}

property int y
{
int get() { return points[1]; }
void set(int x) { points[1] = x; }
}

property int z
{
int get() { return points[2]; }
void set(int x) { points[2] = x; }
}
};

int main()
{
Vertex v;

v.x=6;
}

Personally I like the array syntax, and if I wanted to make the array
private here we are:
ref class Vertex
{
private:
cli::array<int> ^points;

public:

Vertex(): points(gcnew array<int>(3)) {}

property int Points[unsigned]
{
int get(unsigned i) { return points[i]; }
void set(unsigned i, int new_value) { points[i] = new_value; }
}
};

int main()
{
Vertex v;

v.Points[2]=6;
}

--
Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #14
Gernot Frisch wrote:
Best of both worlds?

Is there a way of using "union" for this? Just out of curriosity. I
like [0] instead of .x
It's just as you are used to it.

Don't think so... You'd need some sort of anonymous struct which doesn't
exist in C++.
Jul 22 '05 #15
Gernot Frisch posted:
Best of both worlds?


Is there a way of using "union" for this? Just out of curriosity. I
like [0] instead of .x
It's just as you are used to it.

padding padding padding
The answer is no.
-JKop
Jul 22 '05 #16
"Ioannis Vranos" <iv*@guesswh.at.grad.com> wrote in message
news:1098280724.858472@athnrd02...
This way you can access the Vertex by its more readable x,y,z syntax from
the outside, and still implement efficient matrix transformations in
member (or friend) functions. Too bad C# doesn't support property syntax,
that would've been even better.

Hmm, now that's a Freudian slip... I was thinking C++ doesn't support
property syntax and C# does, but ended up combining the thoughts into the
false statement you see above.
Since it looks like you have C# in mind, here is C++/CLI code for a ref
type with such properties that produces 100% safe IL code (binary
portability):


I haven't dabbled with C++/CLI yet. Main reason for it is I didn't use
Managed C++ much either. If I want to write managed code, I'll write VB.NET
or C#, if I want unmanaged code, I'll write C++. If and only if I needed
managed code to interact with unmanaged code so closely that it would've
resulted in VB.NET code riddled with System.InteropServices.Marshal class
member calls or C# code filled with unsafe blocks, would I resort to using
Managed C++.

And besides, since the OP was concerned with the performance difference
between array indexing and struct member access in C++, undoubtably he'd
find managed code too slow. ;)

--
Unforgiven

Jul 22 '05 #17
> And besides, since the OP was concerned with the performance
difference between array indexing and struct member access in C++,
undoubtably he'd find managed code too slow. ;)


I'd never touch anything "higher" than C++
Jul 22 '05 #18
Unforgiven wrote:

"Ioannis Vranos" <iv*@guesswh.at.grad.com> wrote in message
news:1098280724.858472@athnrd02...
This way you can access the Vertex by its more readable x,y,z syntax
from the outside, and still implement efficient matrix
transformations in member (or friend) functions. Too bad C# doesn't
support property syntax, that would've been even better.

Hmm, now that's a Freudian slip... I was thinking C++ doesn't support
property syntax and C# does, but ended up combining the thoughts into
the false statement you see above.
Since it looks like you have C# in mind, here is C++/CLI code for a
ref type with such properties that produces 100% safe IL code (binary
portability):

I haven't dabbled with C++/CLI yet. Main reason for it is I didn't use
Managed C++ much either. If I want to write managed code, I'll write
VB.NET or C#, if I want unmanaged code, I'll write C++. If and only if I
needed managed code to interact with unmanaged code so closely that it
would've resulted in VB.NET code riddled with
System.InteropServices.Marshal class member calls or C# code filled with
unsafe blocks, would I resort to using Managed C++.

And besides, since the OP was concerned with the performance difference
between array indexing and struct member access in C++, undoubtably he'd
find managed code too slow. ;)

C++/CLI is far better and more powerful than C#/CLI (that's the "C#"),
and is oriented as the systems programming language of CLI (and .NET).

Some things to mention:

1) Deterministic destruction / managed objects with stack semantics

2) All C++ features available for CLI types (e.g. templates). All CLI
features available in C++ (e.g. generics).
VC++ oriented:
3) More optimisation in the produced code. PGO optimisation.
4) More hand optimisation - OMP multithreading support

5) Ability to mix managed and unmanaged types freely, inherit managed
types from unmanaged, unmanaged from managed, unmanaged objects in the
managed heap, managed type objects in the native heap - VC++ support for
that in the release after 2005.
C++/CLI: Correct by default.

Other languages (including C#/CLI): Correct by explicit coding

References:

http://microsoft.sitestream.com/Tech...V333_Sutte.ppt

http://www.accu.org/conference/prese..._(keynote).pdf

http://groups.google.com/groups?hl=e...hat0%404ax.com

And my C++/CLI page: http://www23.brinkster.com/noicys/cppcli.htm

--
Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #19
Ron Natalie posted:
Gernot Frisch wrote:
Best of both worlds?

Is there a way of using "union" for this? Just out of curriosity. I
like [0] instead of .x
It's just as you are used to it.

Don't think so... You'd need some sort of anonymous struct which doesn't
exist in C++.


Thinking about that...

Let's say you had a load of code that defined anonymous structs throughout
(for instance, windows header files). Given the following definition:

union Blah
{
int k;

struct
{
int t;
float r;
};
};
(which I actually like, and I don't know why anonymous structs are
outlawed...)

Anyway, I wonder if a program which parsed it and came out with the
following would do the job?:
class Blah
{
private:

union
{
int k;

struct
{
int t;
float r;
} anonymous1;
} the_union;

public:

int& t;
float& r;
int& k;

Blah() : t( the_union.anonymous1.t ), r( the_union.anonymous1.r ), k(
the_union.k ) {}
};
Hmm... something to throw on top of the "Macro Destroyer" pile I suppose...
-JKop
Consider if this were in a header file. The source files which make use of
it would be unaffected, and everything would compile Standard C++
compliantly.
-JKop
Jul 22 '05 #20
JKop wrote:
Ron Natalie posted:

Gernot Frisch wrote:
Best of both worlds?
Is there a way of using "union" for this? Just out of curriosity. I
like [0] instead of .x
It's just as you are used to it.


Don't think so... You'd need some sort of anonymous struct which doesn't
exist in C++.

Thinking about that...

Let's say you had a load of code that defined anonymous structs throughout
(for instance, windows header files). Given the following definition:

union Blah
{
int k;

struct
{
int t;
float r;
};
};
(which I actually like, and I don't know why anonymous structs are
outlawed...)

Anonymous structs are not outlawed but are valid ISO C++ constructs when
used stand alone.

--
Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #21

Anonymous structs are not outlawed but are valid ISO C++ constructs when
used stand alone.


No they are not (when using the term anonymous struct as an analog to
the legal C++ construct of anonymous union):

An anonymous union defines an unnamed object of unnamed type. If you
change union to struct, the program is ill-formed. All struct/class
key definitions must either define a named object or a named type.
Jul 22 '05 #22
Ron Natalie wrote:
No they are not (when using the term anonymous struct as an analog to
the legal C++ construct of anonymous union):

An anonymous union defines an unnamed object of unnamed type. If you
change union to struct, the program is ill-formed. All struct/class
key definitions must either define a named object or a named type.

Do you mean the following is not valid?

typedef struct
{
int i,k;
}AnonStruct;

class SomeClass { AnonStruct a; };
int main()
{
SomeClass r;

}

--
Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #23
Ioannis Vranos wrote:
Do you mean the following is not valid?

typedef struct
{
int i,k;
}AnonStruct;


Nope that declares a type.

It does not meet the definition of "anonymous union" where you
change union to struct.
Jul 22 '05 #24
"Gernot Frisch" <Me@Privacy.net> wrote:
"JKop" <NU**@NULL.NULL> schrieb:
struct Blah
{
int a;
int b;
int c;
} blah;

int* p_b = &(blah.a);
++p_b;

"p_b" is *not* guaranteed to point to "blah.b". Why? There may be
padding.


I was thinking additional memory used for alinging ia _always_
appended at the end of the structure, thus p_b == &blah.b. If not, I
really have to think about some code lines now...


No, there can be padding anywhere except for before the first
member. The ++p_b example is undefined behaviour anyway because
you are pointing beyond the bounds of the object 'a'.
A plausible example of this could be a 64-bit system with 32-bit
int but 64-bit alignment for int.
Jul 22 '05 #25
In article <84**************************@posting.google.com >,
Old Wolf <ol*****@inspire.net.nz> wrote:
"Gernot Frisch" <Me@Privacy.net> wrote:
"JKop" <NU**@NULL.NULL> schrieb:
> struct Blah
> {
> int a;
> int b;
> int c;
> } blah;
>
> int* p_b = &(blah.a);
> ++p_b;
>
> "p_b" is *not* guaranteed to point to "blah.b". Why? There may be
> padding.
I was thinking additional memory used for alinging ia _always_
appended at the end of the structure, thus p_b == &blah.b. If not, I
really have to think about some code lines now...


No, there can be padding anywhere except for before the first
member. The ++p_b example is undefined behaviour anyway because
you are pointing beyond the bounds of the object 'a'.


Unless it's been changed from the C rules (and I don't see a good reason
why it would have been), creating a pointer to one past the end of an
array (where a single object[1] is considered as a one-element array)
is perfectly valid as long as you don't dereference it.

Not only that, but if you compare the result of incrementing p_b with
&(blah.b), they may be equal, and if they are you can use the pointer
as a pointer to p_b without any problems:

p_b=&(blah.a);
++p_b;
if(p_b==&(blah.b))
{
std::cout<<"No padding between Blah::a and Blah::b"<<std::endl;

//Using p_b like this is valid if and only if the control expression
// of the if evaluates to true
std::cout<<"blah.b is "<<*p_b<<std::endl;
}

A plausible example of this could be a 64-bit system with 32-bit
int but 64-bit alignment for int.


Plausible, but not terribly likely.
More likely (but still not all that likely for members of the same
struct) is aligning on a cache-line boundary (probably 128-byte, if
my vague recollection of a discussion of this I once saw is correct),
or even a memory-page boundary (4k?).
dave

[1] That's `object' in the C sense - basically a region of storage that
can contain a value

--
Dave Vandervies dj******@csclub.uwaterloo.ca
But they're not strings. Not being strings doesn't stop them being useful.
After all, ints aren't strings, yet they are very useful indeed!
--Richard Heathfield in comp.lang.c
Jul 22 '05 #26
"Ioannis Vranos" <iv*@guesswh.at.grad.com> wrote in message
news:1098287126.132095@athnrd02...
Some things to mention:

1) Deterministic destruction / managed objects with stack semantics

2) All C++ features available for CLI types (e.g. templates). All CLI
features available in C++ (e.g. generics).
VC++ oriented:
3) More optimisation in the produced code. PGO optimisation.
4) More hand optimisation - OMP multithreading support

5) Ability to mix managed and unmanaged types freely, inherit managed
types from unmanaged, unmanaged from managed, unmanaged objects in the
managed heap, managed type objects in the native heap - VC++ support for
that in the release after 2005.
Add to that:
6) The C++ Linker can link in .Net Modules, meaning you can actually mix 'n
match different languages in the same assembly! With other .Net languages,
you can have different-language assemblies interoperate easily, but the C++
compiler linker is the only one that can create a single .Net assembly from
different language. This is mainly because the C# and VB.NET compilers have
no separate linking stage and the compiler does not accept .Net modules as
input.
C++/CLI: Correct by default.

Other languages (including C#/CLI): Correct by explicit coding


I don't really understand what you mean by "correct" here. Care to
elaborate?

Also, saying C#/CLI is nonsense, there is no C# without CLI so just saying
C# will do.
And as for .Net programming, I'm a VB.NET kinda guy. No matter how much I
love C++, I have much more experience in VB, and if I want to get something
done, I'm much, much more productive in VB.NET than in any other language.
Besides, Select Case over switch any day!

--
Unforgiven

Jul 22 '05 #27
Unforgiven wrote:
C++/CLI: Correct by default.

Other languages (including C#/CLI): Correct by explicit coding

I don't really understand what you mean by "correct" here. Care to
elaborate?

You can check the pdf or the ppt in the links that I posted.
Essentially it means that there is no need for Dispose() definitions in
C++/CLI but the compiler generates the Dispose from the Destructor that
you may define (including chaining calls to Dispose).
Copying from the pdf presentation:
1) Side By Side: Using a StreamReader

C++:

String^ ReadFirstLineFromFile( String^ path ) {
StreamReader r(path);
return r.ReadLine();
}
C#:

String ReadFirstLineFromFile( String path ) {
using ( StreamReader r = new StreamReader(path) ) {
return r.ReadLine();
}
}

Java:

String ReadFirstLineFromFile( String path ) {
StreamReader r = null;
String s = null;
try {
r = new StreamReader(path);
s = r.ReadLine();
} finally {
if ( r != null ) r.Dispose();
}
return s;
}


2) Side By Side: Using “lock”

C++:

{
lock l( obj );
… do something with shared state …
}
C#:

lock( obj ) {
… do something with shared state …
}
Java:

Monitor.Enter( obj );
try {
… do something with shared state …
} finally {
Monitor.Exit( obj );
}

3) Side By Side: Nontrivial “lock”

C++:

{
lock l( obj, 10 );
… do something with shared state …
}
C#:

if( !Monitor.TryEnter( obj, TimeSpan.FromSeconds( 10 ) ) ) {
throw new Something();
}
try {
… do something with shared state …
} finally {
Monitor.Exit( obj );
}
Java:

if( !Monitor.TryEnter( obj, TimeSpan.FromSeconds( 10 ) ) ) {
throw new Something();
}
try {
… do something with shared state …
} finally {
Monitor.Exit( obj );
}


4) Side By Side: Nontrivial “lock”
C++:

{
lock l( obj, 10 );
… do something with shared state …
}

C#:

using( new Lock( obj, 10 ) ) {
… do something with shared state …
}

public class Lock
: IDisposable {
private object target;
public Lock(
object o, double tm
) {
target = o;
if( !Monitor.TryEnter( o, tm ) )
throw new Something();
}

void IDisposable.Dispose() {

Monitor.Exit( target );

#if DEBUG

GC.SuppressFinalize( this );

#endif
}

#if DEBUG

~Lock() {

Diagnostics.Debug.Fail(
"Undisposed lock“
);

}

#endif

}

Also, saying C#/CLI is nonsense, there is no C# without CLI so just
saying C# will do.

The official standard is C#/CLI.

--
Ioannis Vranos

http://www23.brinkster.com/noicys
Jul 22 '05 #28

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

Similar topics

114
by: Maurice LING | last post by:
This may be a dumb thing to ask, but besides the penalty for dynamic typing, is there any other real reasons that Python is slower than Java? maurice
12
by: Gustavo L. Fabro | last post by:
Greetings! Getting straight to the point, here are the results of my experiment. I've included my comments and questions after them. The timing: (The total time means the sum of each line's...
14
by: Roy Gourgi | last post by:
Hi, How much is C# slower than C++? TIA Roy
5
by: Michael | last post by:
i experience slower compile times with VC++ 2003 compared to VC+6.0. Anyone experiencing the same? Should that be expected? This ineed matters, when total compilation time is > 1h and you have to...
87
by: John Rivers | last post by:
Hello everybody, I just wondered if anybody else has noticed this? It takes around 6 seconds to start debugging a very simple ASPX page with VS.NET whereas VB6 takes under 0.5 seconds, even...
4
by: dhnriverside | last post by:
Hi peeps I'm having some problems with my Session State sticking (it keeps resetting itself) - I haven't looked into it yet, but I was wondering about using SQL Server as an out of process state...
77
by: Peter Olcott | last post by:
http://www.tommti-systems.de/go.html?http://www.tommti-systems.de/main-Dateien/reviews/languages/benchmarks.html The above link shows that C# is 450% slower on something as simple as a nested loop....
25
by: news.microsoft.com | last post by:
Hi all, First post here. I'm porting an application I wrote in VB6, over to VB.NET 2005. It could be said I'm really struggling with some (most!) of the syntax of VB.NET 2005, but I'm getting...
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
0
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
0
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...

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.