Ernst..
"Ernst Boovre" <nos...@nospam.com> schreef in bericht
news:3e3d83e7$0$49113$e4fe...@news.xs4all.nl...
> to learn (for VO programmers too :), and is stable!!!
And can I do this for my users with W95 on 33 Mhz 486 computers with
only 32 Meg of ram also?
Am I also able to distribute my app on less than 5 floppy disks?
How many floppies do you use to distribute your VO apps? <g> Seriously, we've
used CDs to distribute our apps since VO 1. I don't even know if the floppy
drive for my current computer even works - I've never tried it.
--
Ginny
"Ed Ratcliffe" <Gryphon...@telus.net> wrote in message
news:Qqh%9.44531$dd1.2...@news0.telusplanet.net...
> drive for my current computer even works - I've never tried it.
A bit of tongue in cheek on my part. But as many of my users are the mom
and pop stores around north america, this question does have some
validity. For many of these people the primary use of their computer is
to do the business books, and what ever software they started with is
doing the job so why upgrade. Unless these people can see an immediate
financial benefit in upgrading they will not do so. So I do try to
ensure that my app will run on a old 486 with W95.
So what would the footprint of a fairly simple app with a data base be
in C#. The VO app will fit on 4 floppies, with one more if they want the
RP report designer.
Ed
I've never really tested on old hardware/OS since that has never been my target.
But to answer your question, since W95 is no longer supported by Microsoft, it
is also not supported for the .Net Framework, which is what you need to run C#
(or CULE) apps. The .Net Framework itself is a 20Mb download or service patch or
install from your CD, but it will be included already in Windows Server 2003 and
future versions of Windows. Once you have the framework installed, however, apps
aren't particularly large. I don't have one yet as large as my largest VO app
(partly because the big VO apps are getting a total redesign to take advantage
of .Net), but on PocketPC I have apps doing the same work written in C# that are
less than half as big as the C++ versions, if that gives you some idea.
You know your market better than I do, but I'd question the wisdom of limiting
your development to tools that can create apps for unsupported operating
systems - especially when brand new computers capable of running modern apps are
available for $500. Just tell Mom and Pop that they don't need to worry about
the computer since it's included! And the new computer will run QuickBooks
faster than their old one too. Then they could give the old one to their kids
(as if they'd want it).
--
Ginny
"Ed Ratcliffe" <Gryphon...@telus.net> wrote in message
news:pLi%9.71887$c41.2...@news2.telusplanet.net...
I agree with 99% of what you say. But like it or not I wrote this app
for a client that has dealers all over the continent, some of whom have
a computer under protest. For me , this is the end of the road for this
app and I have informed the client that I am no longer willing to
continue with maintenance or development.
I intend to stay with VO for the immediate future, and am trying to find
time to read up on C#. I am not a programmer in the same league as
yourself and others on this ng. I kind of fell into it by accident and
it has funded my software and hardware up until now. But I still see a
small if not especially lucrative market for simple apps that do one
task well without needing bleeding edge hardware to run. So I will
continue to explore opportunities in that area, and who knows just might
create something useful for a change. <BG>
Ed
How long did it take you to rewrite all your apps?? I'd guess a day or two.
Hi Ernst
I don't have any 5333's. Because when I get one, I do as Geoff always
says: 'Find the bug in the app.! '
And because I really often do testing, I can calculate in which part
such a 5333 must be (if it occurs).
So why changing to another language ? Running away from the problem ?
regards
Walt
Easy to do, nothing to learn except good practices.
Eric
So, the sole reason only bugs in your applications.
IMO 5333 errors caused by imperfect khowledge and/or inappropriate style of
coding. Both of them are 80%-Windows and 20%-VO specific.
> How??? I rewrite all my applications to Visual Studio. C# is great, simply
> to learn (for VO programmers too :),
and you replace part of your knowledge;
and more strict compiler limited your style;
and this is really the way for some kind of applications:)
> and is stable!!!
Congratulations!!!
I agree with your opinion that C# is a great language. However sloppy coding
may get you the C# equivalent of the 5333!
In that respect there is not much difference between VO and C#.
Anyway, as others already stated, you should clean up your code.
Jan
Ernst Boovre <nos...@nospam.com> schreef in berichtnieuws
3e3d83e7$0$49113$e4fe...@news.xs4all.nl...
In this Case, the Problem is sitting in front of the Keyboard *s*. You can
force Errors like 5333 in C# also! Good Classdesign is not a Quesitonof the
Language.
Regards
Jan Waiz
P.S. ...there are enough other Reasons that are Points to change...
"Ernst Boovre" <nos...@nospam.com> schrieb im Newsbeitrag
news:3e3d83e7$0$49113$e4fe...@news.xs4all.nl...
"Jan Waiz" <jw...@icomedv.de> wrote in message
news:b1lfm7$139fkr$1...@ID-123813.news.dfncis.de...
Maybe we can suggest Microsoft to also use this wonderproduct! I've
seen the 'Inform Microsoft about this bug" from Office XP quite a few
times. It's the MS variant on the 5333, I guess.....
This does not mean that I would like VO to be a little more forgiving
for -indeed- sloppy programming. As I understood from Geoff, the 5333
mainly come up when the garbage collector comes in and tries to
dispose of objects which are already closed. So, this suggests it
should be possible to reprogram that GC to avoid this kind of
behaviour.
Saves me hours of cleaning up my code <g>
Dick van Kooten
"Eric Hourant" <ehou...@nospam.echo-soft.com> wrote in message
news:b1l3q5$u8o$1...@newsreader.mailgate.org...
"Ernst Boovre" <nos...@nospam.com> wrote in message
news:3e3d83e7$0$49113$e4fe...@news.xs4all.nl...
You may be right about a market for software to run on 7-year-old computers. But
you don't need bleeding edge computers to run .Net apps - just cheap ones that
were made within the last couple of years. 1995 was a very long time ago.
--
Ginny
"Ed Ratcliffe" <Gryphon...@telus.net> wrote in message
news:iUj%9.44655$dd1.2...@news0.telusplanet.net...
How do you get the equivalent of a 5333 error in C#? (I'm not disagreeing that
cleaning up VO code can prevent them in most cases however.)
--
Ginny
"Jan Timmer" <ori...@xs4all.nl> wrote in message
news:3e3e36b8$0$49115$e4fe...@news.xs4all.nl...
I am not sure whether it is exactly the equivalent of a 5333, but here are
some examples how you can mess up things nicely and have a hard time finding
where the problem is.
First, not properly disposing classes that have a 'dispose' interface
implemented. These things are obvious when it is about forms, bitmaps etc..
Much less obvious when it is about the Registry class.
The other thing that bit me was the following:
Class MyClass
{
private string myvar;
public string Myvar
{
get
{
return this.Myvar;
}
set
{
this.myvar = value;
}
}
When during execution the 'get' of 'Myvar' is called, the app will crash
with hardly any info what and where this happened.
Furthermore, using a Try and Catch block in such a way that it is
effectively handling all exceptions causing the real bugs to 'disappear'
completely.
These are of course all programming errors, just like i.m.o. the majority of
the 5333 are programming errors. Nevertheless I like both VO and C# and I
enjoy working with both languages.
Jan
Ginny Caughey <ginny....@wasteworks.com> schreef in berichtnieuws
b1m08c$14e2s9$1...@ID-144704.news.dfncis.de...
Because he's obviously not a very good programmer.
In your sample, it is not something like a 5333, but rather a stack
overflow.
However, I don't know how to get a 5333 'like' in C#... Perhaps a good
start should be to use unmanaged code :-)
PhL
"Jan Timmer" <ori...@xs4all.nl> a écrit dans le message de news:
3e3e99de$0$49105$e4fe...@news.xs4all.nl...
I agree, the sample with the code is more a stack overflow.
> However, I don't know how to get a 5333 'like' in C#... Perhaps a good
> start should be to use unmanaged code :-)
That for sure is a good start. :-)
Jan
Philippe Legros <Philippe...@wanadoo.fr> schreef in berichtnieuws
b1m6ps$ld5$1...@news-reader11.wanadoo.fr...
Failing to call Dispose could cause a memory leak, but as far as I know it won't
cause memory corruption - IOW a VO 5333.
I don't know if I'd say that the majority of 5333s are programming errors. They
can often (but not always) be prevented by careful programming, but because the
type of programming you have to do to prevent them isn't well documented (if at
all) it's hard for me to blame the programmer - especially if the faulty code is
in the VO runtime and not something you wrote yourself.
--
Ginny
"Jan Timmer" <ori...@xs4all.nl> wrote in message
news:3e3e99de$0$49105$e4fe...@news.xs4all.nl...
Wich type(s) of database(s) are you using and how do you access it(them)?
Marcos Nogueira
S. Paulo - Brazil
"Ernst Boovre" <nos...@nospam.com> wrote in message
news:3e3d83e7$0$49113$e4fe...@news.xs4all.nl...
I don't think that it is fair to say that he does not know any VO...
I think it's a bit childish.. If you don't like that tennisracket.. You
probably don't play tennis that well... Nonsense...
If he's fed up with VO, I'll like to ask him why.. I've never seen his name
in the group here, so we were not able to help him. Or he did not think he
needed any help or he was afraid to ask any..
I never have 5333's and if I have, they are my fault (at least, most of the
time). Anyway.. Too bad to loose a VO-er. I'm very happy with it and want
other people to be also. And if anyone wants.. He can get rid of any 5333's
popping uyp in his app... I'm sure...
Just my point.... Regards, Marc
"Jamal" <jama...@nospam.hotmail.com> schreef in bericht
news:5IB%9.63545$HG.12...@news4.srv.hcvlny.cv.net...
ehat Jan would like to explain is, that it is also in C# possible to force
Errors "like" a 5333. A 5333 is a Result of bad Classdesign and/or using
Classes. And no Language of this World will help you in bad using of
Classes...
regards
Jan Wiaz
"Ginny Caughey" <ginny....@wasteworks.com> schrieb im Newsbeitrag
news:b1mg51$14sku0$1...@ID-144704.news.dfncis.de...
<g>
Good. Obviously you couldn't cut it as a VO developer. We don't get 5333's
either but we do use VO.
Cheers.
Geoff
"Ernst Boovre" <nos...@nospam.com> wrote in message
news:3e3d83e7$0$49113$e4fe...@news.xs4all.nl...
"Doug Brong" <doug...@compuserve.com> wrote in message
news:4f56caa1.03020...@posting.google.com...
hhhmmmmm... I certainly would <g>.
Yes there are some traps and yes there is some sloppy GUI class stuff
(which Paul and John are cleaning up as we speak!) but by and large, the
majority of 5333's certainly are developer errors. Once I blamed
documentation (or lack of it) but over the years I have just seen too many
people race into things they don't understand without wanting to spend
reasonable reading time first.
In fact I would go so far as to say that 95% of 5333's I've seen are
developer error.
Geoff
> I guess the "good news" is that you are now leaving the ng?
Why you is so impatient? <g>
> Good. Obviously you couldn't cut it as a VO developer. We don't get 5333's
> either but we do use VO.
You don't get 5333?! I just wonder which way you using VO... <vbg>
But (seriously) you right. If program reports any error the better way is
try to fix it, not to change development tool.
Denis
That may be what he intends, but I was very interested to know how to corrupt
dynamic memory in C#.
--
Ginny
"Jan Waiz" <jw...@icomedv.de> wrote in message
news:b1o2l7$14h2c2$1...@ID-123813.news.dfncis.de...
100% of 5333 errors are developer errors. It's just that some of them are due to
CA developer errors.
--
Ginny
"Geoff Schaller" <geof...@bigpond.net.au> wrote in message
news:ZZN%9.12333$DC6....@news-server.bigpond.net.au...
The way I would interpret this analogy would be not that "if you don't
like that tennis racket you probably don't play tennis that well," but
rather "if you suck at tennis using tennis racket A, what makes you
think you'll be good at it with tennis racket B."
My 0.02
Greg
"Ginny Caughey" <ginny....@wasteworks.com> wrote in message
news:b1om95$14trrq$1...@ID-144704.news.dfncis.de...
But if you never CAST and never send dynamic data types to APIs and never
use inline expressions or assignments, you will never get into trouble <g>.
Geoff
"Denis Mitrofanov" <deni...@mail.ru> wrote in message
news:b1ojct$1a28$1...@dipt.donbass.net...
> The trick is incremental development (not, for example, converting a 2.0
app
> to 2.5 - nothing incremental about that <g>). From a stable point in an
app
> you change/compile/run by degrees. Build a new class. Run it. Build a new
> window. Run it. Build a new method. Run it. You will often get 5333's
> (unreferenced pointers, objects which don't exist etc, etc) but because
you
> know which chunk of code you just changed, its much more immediately
obvious
> as to the cause. Proper incremental backups (using VOPP of course) is
> another very useful tool.
Not always...
For example, I use BEGIN/END SQUENCE clause. In VO 2.5b3 all works fine
after BREAK. In VO 2.6 I got 5333 (GPF) while calling class constructor,
because of class VMT was destroyed, I used disassembling and machine code
debugging to determine this. No CASTs, no REFs. And I still don't know who
has destroyed VMT... May be this is one of issues between 2.5b3 and 2.6...
Denis
I remember myself about a discussion between you and me, about 1 year ago.
In that discussion, I had to convince you that there must also some 5333 errors in
the base classes of VO.
Now, I see you have a more accurate opinion.
I like this.
Have a nice day.
Dirk
Geoff,
The apostle? I think it is Peter and Paul <GGG>
5333 occasionally, at most rarely on W2k (more occasionally on Win98). As
this moment, I have two major clients using my 2.6 apps and stop calling for
support except for "How to do this", rather than "Help, Help, your apps is
crashing again with strange numbers 3333" or "index corruption". I will
recommend a database server to this major clients withing this year to
"completely" iradicate index problems.
What is status of 2.7 GUI conversion and what new features or GUI elements
will be added? A button with images and text and menu is welcome!
--
Regards,
Rene J. Pajaron
RPSoftware
Philippines
"Geoff Schaller" <geof...@bigpond.net.au> wrote in message
news:ZZN%9.12333$DC6....@news-server.bigpond.net.au...
> What is status of 2.7 GUI conversion and what new features or GUI
elements
> will be added? A button with images and text and menu is welcome!
I've never seen a pushbutton with images AND text. Is this what you're
talking about? According to MSDN, a pushbutton cannot contain both an
image and text simultaneously.
Greg
But I was always seek evidence first the developer himself is not to blame.
VO should be blamed last<g>.
Geoff
No idea - ask GrafXSoft.
(Actually, I very rarely use them. I prefer more OOP techniques)
Geoff
"Denis Mitrofanov" <deni...@mail.ru> wrote in message
news:b1qmvi$7rb$1...@dipt.donbass.net...
> Ok, add one more thing to your list:
> No begin/end sequences <g>.
>
> (Actually, I very rarely use them. I prefer more OOP techniques)
I can't see your reasons...
Why handling errors is not OOP? OK, if it was something like 'On error
goto'. But, the way the errors are managed by VO doesn't hurt my conception
of OOP. Begin/End sequence is, imho, a great feature of VO. You can find a
similar logic for example in Java or C#.
PhL
Handling errors can certainly be OOP, and that's exactly how they're handled in
VO. And Clipper, for that matter.
But the Begin/End sequence construct can be and is used well beyond the simple
handling of errors.
It's probably more correct to refer to it as an exception handling technique,
and it's quite easy for a programmer to break the OOP implementation (leaving
many created objects in memory, for instance) through the use of this
technique.
I suspect that's where Geoff's coming from.
Philippe Legros wrote:
--
g.
Gary Stark
gst...@RedbacksWeb.com
http://RedbacksWeb.com
> I've never seen a pushbutton with images AND text. Is this what you're
> talking about? According to MSDN, a pushbutton cannot contain both an
> image and text simultaneously.
1. How about button with menu option (like we have found on Office2000
fileopen).
2. A button with bitmap images (Borland-style).
3. A toolbar button with menu option as well.
Of course, 5333 "advisory" at compile time.
--
Regards,
Rene J. Pajaron
RPSoftware
Philippines
www.rpsoftware.cdo.ph
"Greg Garza" <gga...@ruddwisdom.com> wrote in message
news:b1rihi$14noq2$1...@ID-134241.news.dfncis.de...
See TBDropDown.zip by Karl-Heinz Rauscher at:
http://www.vocager.de/german/Tips/gui/page1_12.stm
Warren
"RPSoftware" <~_remove_this_~rps...@mozcom.com> wrote in message
news:b1v1l4$1796av$1...@ID-143532.news.dfncis.de...
>>> And Clipper, for that matter.
I forgot to mention Clipper: shame on me!
>>> I suspect that's where Geoff's coming from.
Not from Mars, I presume :-)
I think I understand the idea. With such a construct, you can easily 'jump
over' the lines of codes where you, for example, freed memory.
I will reply to this argument that it is to the developer to freed the
resources at the right moment (after the Begin/end construct, for example).
PhL
I'm not arguing <g> but Begin/End is about as Un-OOP as you can get.
You can cause an exception to occur from within any class and jump back to
any other bit of code and well and truly mangle any object structure you set
up. Yes you can certainly encapsulate these sequences and create a great OOP
error handler but you can also well and truly bugger the whole thing <g>.
Geoff
>>> but Begin/End is about as Un-OOP as you can get.
So, programming the events (an error is somewhere a kind of event) is not
OOP. So, we can use OOP, but not with Windows :-) OK, it is a little
caricatured...
PhL
Philippe Legros wrote:
Gary,>>> And Clipper, for that matter.
I forgot to mention Clipper: shame on me!
Go stand in the corner!
>>> I suspect that's where Geoff's coming from.Not from Mars, I presume :-)
No. They kicked him out quite some ago.
He'd tried Venus, but they told him men were from Mars, who took another look at him, and banished him to Pluto.
Pluto had a look at him, and sait "What about Uranus?" at which point
Geoff needed to cough.
I think I understand the idea. With such a construct, you can easily 'jump
over' the lines of codes where you, for example, freed memory.
Correct. That code, releasing the memory, would be bypassed.
I will reply to this argument that it is to the developer to freed the
resources at the right moment (after the Begin/end construct, for example).
The problem is that you might not have the objects in scope. Consider
this sort of code ...
Function WhoCares()
Begin Sequence
SomeCall()
End Sequence
//More stuff
Return
Function SomeCall
local oSomething as Whatever
oSomething := Whatever{}
...
if SomeCondition
// do stuff
else
Break
end
oSomething:Close()
oSomething := NULL_OBJECT
Return
In this example, if SomeCondition evaluates to false, the code will
call the break statement, dropping straight out of the function SomeCall(),
returning to the line following the end sequence in WhoCares, and there
is no way that the object referred to by oSomething can be given a chance
to evaluate its close method. While in many instances this probably won't
create any issues, if you start running code that's nested several levels
deep, with similar instantiations of different objects along the way, I
think one can be creating all manner of potential memory issues.
I'd say that's 5333 in the making type coding<g>
--
HTH
Steve Quinn
Stephen Quinn wrote:
> Gray
>
> I'd say that's 5333 in the making type coding<g>
That would be my assessment too.
...but how you deal with them in your code.... now THAT can be made as OOP
as you like <g>.
"Philippe Legros" <Philippe...@wanadoo.fr> wrote in message
news:b20jsg$40h$1...@news-reader10.wanadoo.fr...
That code is truly evil. <g>
--
Ginny
"Gary Stark" <21226f...@RedbacksWeb.com> wrote in message
news:3E44563C...@RedbacksWeb.com...
Ginny Caughey wrote:
> Gary,
>
> That code is truly evil. <g>
Tell me about it. :)
> Function SomeCall
> local oSomething as Whatever
> oSomething := Whatever{}
> ...
> if SomeCondition
> // do stuff
> else
> Break
> end
> oSomething:Close()
> oSomething := NULL_OBJECT
>Return
Remark #1: bad coding <g>
Remark #2: I am not sure that there is a potential memory issue, as
oSomething will be out of scope
Remark #3: you can have a similar scenario if you replace the Break by a
classical return.
PhL
Philippe Legros wrote:
> Gary,
>
> > Function SomeCall
> > local oSomething as Whatever
> > oSomething := Whatever{}
> > ...
> > if SomeCondition
> > // do stuff
> > else
> > Break
> > end
> > oSomething:Close()
> > oSomething := NULL_OBJECT
> >Return
>
> Remark #1: bad coding <g>
That's my point.
> Remark #2: I am not sure that there is a potential memory issue, as
> oSomething will be out of scope
Again, that's my point. I believe that the fact that it's out of scope can
provoke a memory issue. What if oSomething is a server, or a window with a
server, or some other complex object object. This is a potential memory
leakage issue, plus of course that stuff that 5333s are made of.
>
> Remark #3: you can have a similar scenario if you replace the Break by a
> classical return.
To a point, yes, perhaps.
But a return statement will only return you to the most immediate call,
while a break will dump you all the way back out to where the Begin
Sequence/End Sequence statements were made. If your break is nested, say,
seven functions deep, with your begin sequence placed at the first level,
your break will take you pretty well all the way out, but your similarly
placed return will drop back the one nesting level only. Subsequent return
statements might well take you back to the same location, or there may be
further code that gets executed within those other levels before you drop
back out.
> > Remark #3: you can have a similar scenario if you replace the Break by a
> > classical return.
>
> To a point, yes, perhaps.
>
> But a return statement will only return you to the most immediate call,
> while a break will dump you all the way back out to where the Begin
> Sequence/End Sequence statements were made. If your break is nested, say,
> seven functions deep, with your begin sequence placed at the first level,
> your break will take you pretty well all the way out, but your similarly
> placed return will drop back the one nesting level only. Subsequent return
> statements might well take you back to the same location, or there may be
> further code that gets executed within those other levels before you drop
> back out.
That's also why I program with one entry point - one exit point to a method/function, I use
BEGIN/END SEQUENCE extensively to achieve this.
--
HTH
Steve Quinn
"Gary Stark" <21226f...@RedbacksWeb.com> wrote in message
news:3E46ADE1...@RedbacksWeb.com...
> Phillipe,
>
>
> Philippe Legros wrote:
>
> > Gary,
> >
> > > Function SomeCall
> > > local oSomething as Whatever
> > > oSomething := Whatever{}
> > > ...
> > > if SomeCondition
> > > // do stuff
> > > else
> > > Break
> > > end
> > > oSomething:Close()
> > > oSomething := NULL_OBJECT
> > >Return
> >
> > Remark #1: bad coding <g>
>
> That's my point.
>
>
> > Remark #2: I am not sure that there is a potential memory issue, as
>
> > oSomething will be out of scope
>
> Again, that's my point. I believe that the fact that it's out of scope can
> provoke a memory issue. What if oSomething is a server, or a window with a
> server, or some other complex object object. This is a potential memory
> leakage issue, plus of course that stuff that 5333s are made of.
>
>
> >
>
>
> > your break will take you pretty well all the way out, but your similarly
> > placed return will drop back the one nesting level only. Subsequent return
> > statements might well take you back to the same location, or there may be
> > further code that gets executed within those other levels before you drop
> > back out.
>
> That's also why I program with one entry point - one exit point to a method/function, I use
> BEGIN/END SEQUENCE extensively to achieve this.
Yep. If you program correctly, it will be great.
If you don't, I expect that you might end up with memory leaking all over the place.
I am able to place an icon (*.ico) on a PushButton along with text. I'm
pretty sure I can do a bitmap too, although I haven't tried. Maybe I'm
misunderstanding your request. I'd paste an image except my news server
doesn't allow HTML.
Greg