Register to post in forums, or Log in to your existing account
 

This forum is locked: you cannot post, reply to, or edit topics.  This topic is locked: you cannot edit posts or make replies.     Home » Forums » General zApp Discussion
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Mar 24, 2005 3:59 am   

Build 2.2.0.20 posted
 
Well, the previous build had so many problems that I decided to post a new build tonight.

What's *really* exciting about this build is that the size of zApp has decreased from 11MB to about 3.5MB!! This is due to a program called PECompact2 that theNerd pointed me to. This is a great compression program, and it's compatible with eLicense (I tried this a long time ago with zMUD and never found a compressor that worked with eLicense).

They also have a program called PEBundle that supports embedding DLL files with your EXE. So, I went ahead and embedded the DLL drivers for SQLite, MySQL, and Postgresql. It doesn't include the MySQL 4.1 DLL file though, since it was much larger than the others.

So, the complaints about a "huge runtime" should be much decreased by this improvement in filesize.

Also implemented in this build is the ability to rename the ZAPP.EXE to something like MYAPP.EXE which will cause it to automatically load the MYAPP.ZML or MYALL.ZXL file. It will also look for a resource in the MYAPP.DLL file called ZXLDATA and will load that as the main application if it is found. You can also now include the entity definition AppName in the entity section of the ZML file to change the name of the application, which will change what filenames zApp will load as plugins.

Please try this build on different systems and let me know how it works. I don't have any Win95 or Win2000 systems anymore, and it's hard for me to test on Win98 right now without messing with my laptop.

Hopefully I also fixed the issue of Themes not working on non-XP systems, so let me know about that too.

Have fun!
Reply with quote
Tarn
GURU


Joined: 10 Oct 2000
Posts: 867
Location: USA

PostPosted: Thu Mar 24, 2005 4:45 am   
 
The web browser demo and calc.zml work fine for me on XP and 2000.

editor.zml blows up on both of them (and Windows shuts it down). The spash screen opens, the progress bar shows at 100% loaded, then it gives an access violation at 005BF8E2 in module zApp.exe, write of address 00000058. Then, the main editor form opens up, minus the tabs and memo control. Most of the options under the File menu (including "New") are greyed out.

The 2000 machine should have been clean, but is it possible I have an old editor.zml?

-Tarn
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Mar 24, 2005 5:20 am   
 
Reproduced this. Darn it, that's the one application I didn't test. And it seems to be a problem with the compressed zApp. Works fine with the uncompressed file, and fails with the compressed file. I'll mess with not compressing some of the resources to see what I can come up with. Very disappointing, but thanks for the report.
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Mar 24, 2005 5:22 am   
 
Hmm, actually it looks like it's not the compression but is the embedding of the database DLLs. It worked with just the sqlite.dll, but now with all of the other dlls it fails. Still investigating.
Reply with quote
theNerd
Adept


Joined: 01 Mar 2005
Posts: 277

PostPosted: Thu Mar 24, 2005 5:25 am   
 
I'll be testing it tomorrow. You might want to get Virtual PC and/or VMWare. I use Virtual PC at home and VMWare at work. I have just about every OS installed and different versions of IE installed. Very, very handy for testing.
Reply with quote
theNerd
Adept


Joined: 01 Mar 2005
Posts: 277

PostPosted: Thu Mar 24, 2005 5:27 am   
 
Zugg, are you setting the DLLs not to extract? If you are, set the trouble ones to extract and see what happens.
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Mar 24, 2005 6:08 am   
 
Well, I narrowed the problem down to the LibMySQL.DLL drivers. The SQLite and Postgresql drivers work fine. But for some reason the PEBundle program doesn't work with the MySql drivers. Seems to be an issue bundling DLLs that import symbols from other DLLS (MySQL imports from WSOCK32.DLL and KERNEL.DLL).

This is using the "advanced" mode of PEBundle where the bundled DLL is not written to disk. Works fine if I use the mode where the DLL is extracted, but then the driver files are left around in the folder after running zApp. There is an option to delete the files after zApp runs, but that seems kludgy and I'm not sure I want that kind of disk activity when loading and exiting zApp.

So, for now I'm just going to bundle the SQLite.DLL, since that's the main database DLL that I'll be using in eMobius anyway. People who use the other databases will need to download the database drivers separately for whatever database they are using.

I was dreaming of having all of this nice database stuff embedded in zApp, but it doesn't look like that is really feasible. Anyway, I have updated the 2.2.0.20 build, so you can download it again and give it another try. Let me know how it works or what problems it has.
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Mar 24, 2005 6:23 am   
 
Yeah, I need to get VMware one of these days. Not sure about Virtual PC...isn't that the Microsoft product? VMware has been the leader in virtual machine technology for years, so I'm not sure I'd use anything else.

Since I just bought the PE utilities, I should wait a couple of weeks before buying something else. Taxes are coming due soon so money is going to be tight for at least a month.

But it makes sense that I could have all of the different versions of Windows to test with. I've always liked the thought of switching between versions of OS with a mouse click.

Does anyone else use VMware? I think Rainchild mentioned it once. How fast can you really switch between OSes, and how stable is it? I'm a bit paranoid about installing complex software on my development system.

Also, how easy is it to access files in one virtual machine from the main machine? For example, if I created a clean virtual Win98 machine with a clean version of Delphi 5 installed in it, could I copy my zMUD source code between my main system and the virtual system? If so, that might be pretty cool. I wouldn't ever have to worry about Delphi 5 and Delphi 7 clashing.
Reply with quote
bortaS
Magician


Joined: 10 Oct 2000
Posts: 320
Location: Springville, UT

PostPosted: Thu Mar 24, 2005 1:03 pm   
 
Moved topic to the VMWare thread.
_________________
bortaS
~~ Crusty Klingon Programmer ~~
Reply with quote
theNerd
Adept


Joined: 01 Mar 2005
Posts: 277

PostPosted: Thu Mar 24, 2005 2:45 pm   
 
It's a shame you couldn't get the MySQL driver to work. SQLite is okay but it doesn't handle date fields and has some drawbacks. I can't do a query based on a date, for example. However, it's not the end of the world. I'll just bundle it with my install when I need it.
Reply with quote
theNerd
Adept


Joined: 01 Mar 2005
Posts: 277

PostPosted: Thu Mar 24, 2005 2:51 pm   
 
A new version of PECompact2 came out today (ver. 2.5). Any chance the trouble DLLs would work in the new version? Probably not but it can't hurt to try Smile
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Mar 24, 2005 6:07 pm   
 
Nope, I'm already using v2.5 of PECompact. It's the PEBundle that has the trouble, and it hasn't been updated in almost a year. I posted the problem to the forums to see if I get an answer.

In SQLite everything is raw data, so you *can* store dates, you just have to pick your own format. You can store them as Unix Timestamp values, for example, just like MySql. This is a plain integer field. In zApp dates are stored in the TDateTime format, which is a floating point field. I think the problem you are mentioning is that there are not any functions to convert string-dates into these other formats. So it's hard for an end-user to create a query.

In zApp you would use the various Date functions to form a query against the database. And I just noticed that the Date Library isn't documented, so I'll add that to my to-do list.

Also, keep in mind that the MySQL and SQLite drivers are really for completely different applications. MySQL requires your database to be running on an actual server. SQLite is used for in-memory databases where speed is the primary concern. SQLite is not a client-server database, and MySQL is not a local database. For example, I can't use MySQL for the in-memory cache for eMobius. There is an embedded version of MySQL, but that costs actual money.

You can use SQLite for completely in-memory data structures. Just specify a blank string for the database name. This allows you to create datasets in memory and use the Grid, Tree, and other database components without even needing to write the data to disk. This is really great for in-memory tables and other data structures that you might normally be tempted to invent your own data format for. Not many programmers are used to using full in-memory SQL tables in their software design since until SQLite there wasn't a high-performance solution that made this feasible.

Imagine even a normal array structure (and array of struct/record). Normally, in Pascal or C you'd define the class structure for each array element, and then use a linked-list for the list of elements. Using SQLite you define the record structure as a table schema, and then a table becomes your array of elements. But now you can add indexes and issue full SQL queries against your data, which is something you could never do (without a *lot* of work) with your simple array of records linked-list.

I'm planning on integrating SQLite with the XML library so that it's easy to save or load in-memory SQLite tables from disk-based XML files. This would allow in-memory data structures to be easily saved and restored from disk.

Anyway, this is a bit off topic, but it's really a whole different way to look at desktop application programming. Which is why embedding the SQLite driver was really important.
Reply with quote
theNerd
Adept


Joined: 01 Mar 2005
Posts: 277

PostPosted: Thu Mar 24, 2005 7:08 pm   
 
Quote:
I think the problem you are mentioning is that there are not any functions to convert string-dates into these other formats. So it's hard for an end-user to create a query.

This is what I was mainly getting at about dates and SQLite. Also, I appreciate the info on MySQL since I have no experience with it and I am only recently using SQLite so my knowledge on that is limited.

I'm glad you posted that info. Thanks.
Reply with quote
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.     Home » Forums » General zApp Discussion All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
© 2009 Zugg Software. Hosted on Wolfpaw.net