That’s right and I am working in many projects as consultant. I wrote a java plugin for xojo and a java database plugin to be able to use java database connectors directly inside of xojo and a few things more.
API 2
Renaming events & properties ?
Both were warned loudly AGAINST during betas and they retracted the initial version
Then didi it anyway
Thats willful
Lets look at this case - one you seem to allude to
https://tracker.xojo.com/xojoinc/xojo/-/issues/78178
Xojo’s documentation IS 100% incorrect about “All arrays and any class instances are always passed by reference regardless of what is specified in the method declaration.”
Arrays and class instance are REFERENCE TYPEs
Integers are VALUE types
Do I need to explain to you the difference ?
(Value type and reference type - Wikipedia)
In Xojo when you pass a value type you get a temporary COPY of that value in the called code
You can manipulate that VALUE all you want and the changes are only made to the COPY
The EXACT SAME is true with a REFERENCE TYPE (not the thing it refers TO)
You get a copy of the REFERENCE
SO you can alter the reference any way you want and the changes have no impact on the original
BYREF works EXACTLY the same for a reference type or a value type
Changes made to the VALUE, or the reference, ARE actually made TO the original
Thats NOT what Xojos docs say
If you need I can write you some code to illustrate
edit : here I’ll do it anyway
sub ByValMethod(I as integer)
I = I + 1 // assign a new VALUE (since this is a value type)
system.debuglog currentmethodname + " " + i.tostring
end sub
sub ByValMethod(d as datetime)
d = New datetime(0) // assign a new REFERENCE since this is a reference type
System.debuglog currentmethodname + " " + d.sqldatetime
end sub
sub ByRefMethod(byref I as integer)
I = I + 1 // assign a new VALUE (since this is a value type)
system.debuglog currentmethodname + " " + i.tostring
end sub
sub ByRefMethod(byref d as datetime)
d = New datetime(0) // assign a new REFERENCE since this is a reference type
System.debuglog currentmethodname + " " + d.sqldatetime
end sub
dim I as integer // value type
dim d as datetime = datetime.now() // reference type
// pass, byval, has no impact on original
system.debuglog currentmethodname + " " + i.tostring
byvalmethod(i)
system.debuglog currentmethodname + " " + i.tostring
system.debuglog currentmethodname + " " + d.sqldatetime
byvalmethod(d)
system.debuglog currentmethodname + " " + d.sqldatetime
// pass, byref, alters the original
system.debuglog currentmethodname + " " + i.tostring
byrefmethod(i)
system.debuglog currentmethodname + " " + i.tostring
system.debuglog currentmethodname + " " + d.sqldatetime
byrefmethod(d)
system.debuglog currentmethodname + " " + d.sqldatetime
What you’ll see is something like
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.Run 0
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.ByValMethod 1
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.Run 0
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.Run 2025-01-08 10:33:40
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.ByValMethod 1969-12-31 17:00:00
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.Run 2025-01-08 10:33:40
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.Run 0
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.ByRefMethod 1
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.Run 1
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.Run 2025-01-08 10:33:40
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.ByRefMethod 1969-12-31 17:00:00
Jan 8 10:33:40 My Application.debug[81381] <Warning>: App.Run 1969-12-31 17:00:00
Note the BYREFS BOTH retain the changes made in the called method where the BYVAL does not
THIS is why I say Xojo docs are100% WRONG on this point
I can see what you mean, but never used the ByRef keyword or the reference way of using variables
if you’ve ever used ANY of the built in types that require the use of “NEW” you’ve used reference types
Dictionaries, windows, controls, datetime, you name it
You’ve used them - you just might not realize you have
Ah yes, I did that. But never thought about the difference in naming, just found out the way things worked and went with that. But now I know what you mean with this
Perfect example of the Xojo failures.
there eis no failure it is fixed… 3x times, so in sum there is double success
The case is 1 month old… It says fixed but with the milestone set to to 2025r1.
Did you expect that the fix magically apeared on previous releases? or what exactly is the problem/failure in this “example”?
Looks like it was changed to 2024.4 from 2025.1 . Looks a bit non clear reading the bugtracker. There it is defined at the end of all positions before closing: 2024.4
That makes it clear why people are using the solution already there I guess.
Wait, they Fixed it the same day it was filed…
They squeezed the fix in the 2024r4 even when it was originally set to 2025r1…
It is actually working…
![:face_with_raised_eyebrow: :face_with_raised_eyebrow:](https://ifnotnil.com/images/emoji/apple/face_with_raised_eyebrow.png?v=12)
And this is a Failure?
I’m just reading what Giulio wrote in that thread. If it’s REALLY fixed, yay…
How many bugs were introduced in the last release? I think I read about 4 or 5…
That’s what I said. People are already using the solution.
That post mentions some reported issues that are confirmed working by the OP (who created the issue) or others (like Ivan above).
This user is reporting another problem (maybe related) but haven’t provided a sample yet.
I suppose I am another who has moved totally away from xojo. I’ve had a license all this time, but it expires this month.
Why did you move away from Xojo?
The short version is bugs. REAL was certainly willing to work with us and the engineers were always helpful on any issue, but in the end, there were just too many problems, one of which came close to shutting us down.
We were able to stick with RB 2009 r2 that was working for us for some time. I think the bugs that were our immediate problem were eventually resolved – those reports no longer exist in the xojo bug tracker – but at some point the API was being rewritten and it became easier for us to cobble together custom linux builds to keep the old app running than to rewrite our main applications.
Then I started writing a web version of our product and so wasn’t doing xojo work. From time to time, I did look at writing some other xojo stuff; somewhere on my computer is a half-finished web application framework, and some other projects. But invariably I would run into a bug…
That’s the reason of the most people running away from it. It is a real good idea for a Software behind but the programmers and the decisions behind the product are destroying it. Android was much more important than anything else for a long period. Therefore they builded Web 2.0 not compatible to Web 1.0 so projects can’t be imported und would run. So many changes inside made it impossible. By the way: that especially was a promised functionality and for many users the reason why to work further with Xojo for their web projects. At the end they had to rewrite. Many of them passed away and using other products like C#, Java, Swift, PHP … the list is really long. They switched not while the product Idea or the concept behind are bad but while the decisions of the company drove the product in the wrong direction. Sadly it is not stopped until today. Today I think there is no rescue for this product while there are too many Bugs and too less Service and support. By the way you can too this looking on their behavior with users writing not what they like to read. People get banned while ranting when projects are comping to the point that everything stops.
Xojo, regarding to the own words of “the” genius is not for professionals or business but for “citizen” developers only.
This was not the case in 2009.