ibpp-discuss Mailing List for IBPP, a C++ API for Firebird Server
IBPP is a C++ client class library for FirebirdSQL
Status: Inactive
Brought to you by:
epocman
You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(6) |
Nov
(27) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(1) |
Feb
(42) |
Mar
(6) |
Apr
(2) |
May
(43) |
Jun
(27) |
Jul
(5) |
Aug
(12) |
Sep
(1) |
Oct
(16) |
Nov
(23) |
Dec
(52) |
2002 |
Jan
(8) |
Feb
|
Mar
(12) |
Apr
(8) |
May
(1) |
Jun
(16) |
Jul
|
Aug
(57) |
Sep
(11) |
Oct
(1) |
Nov
(4) |
Dec
(8) |
2003 |
Jan
(20) |
Feb
(49) |
Mar
(40) |
Apr
(24) |
May
(26) |
Jun
(43) |
Jul
(24) |
Aug
(27) |
Sep
(22) |
Oct
(56) |
Nov
(50) |
Dec
(26) |
2004 |
Jan
(16) |
Feb
(76) |
Mar
(79) |
Apr
(67) |
May
(28) |
Jun
(40) |
Jul
(11) |
Aug
(55) |
Sep
(36) |
Oct
(58) |
Nov
(45) |
Dec
(30) |
2005 |
Jan
(66) |
Feb
(59) |
Mar
(28) |
Apr
(30) |
May
(10) |
Jun
(18) |
Jul
(4) |
Aug
(37) |
Sep
(68) |
Oct
(39) |
Nov
(54) |
Dec
(16) |
2006 |
Jan
(20) |
Feb
(27) |
Mar
(110) |
Apr
(39) |
May
(33) |
Jun
(3) |
Jul
(41) |
Aug
(17) |
Sep
(6) |
Oct
(9) |
Nov
(39) |
Dec
(10) |
2007 |
Jan
(45) |
Feb
(54) |
Mar
(69) |
Apr
(9) |
May
(12) |
Jun
(11) |
Jul
(38) |
Aug
(16) |
Sep
(21) |
Oct
(15) |
Nov
(14) |
Dec
(8) |
2008 |
Jan
(55) |
Feb
(18) |
Mar
(30) |
Apr
(28) |
May
(19) |
Jun
(38) |
Jul
(26) |
Aug
(8) |
Sep
(8) |
Oct
(14) |
Nov
(29) |
Dec
(5) |
2009 |
Jan
(8) |
Feb
(13) |
Mar
(22) |
Apr
(3) |
May
(39) |
Jun
(2) |
Jul
(4) |
Aug
(9) |
Sep
|
Oct
(6) |
Nov
|
Dec
|
2010 |
Jan
|
Feb
(8) |
Mar
(6) |
Apr
(8) |
May
|
Jun
(1) |
Jul
(30) |
Aug
(14) |
Sep
(12) |
Oct
(14) |
Nov
(8) |
Dec
(3) |
2011 |
Jan
(2) |
Feb
(2) |
Mar
(6) |
Apr
|
May
(64) |
Jun
(15) |
Jul
(11) |
Aug
|
Sep
|
Oct
(5) |
Nov
(6) |
Dec
(23) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
(6) |
May
(15) |
Jun
|
Jul
|
Aug
(12) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
2013 |
Jan
(3) |
Feb
(3) |
Mar
(6) |
Apr
(1) |
May
(1) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
(3) |
Nov
(6) |
Dec
|
2014 |
Jan
|
Feb
(7) |
Mar
(2) |
Apr
(1) |
May
|
Jun
(4) |
Jul
(5) |
Aug
|
Sep
(2) |
Oct
|
Nov
(7) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
(6) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
(1) |
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
From: djm <mot...@ne...> - 2023-09-04 20:24:18
|
*Dear Firebird developers,* *I am writing to inquire about the possibility of updating the IBPP code to support Firebird on Mac M1 and M2 devices.* *As you know, Apple has recently shifted to using its own M1 and M2 processors in its Mac computers. These new processors are based on the ARM architecture, which is different from the x86 architecture that was previously used in Macs.* *As a result, Firebird must be ported to the ARM architecture in order to run on Mac M1 and M2 devices.* *I am aware that there is already a project underway to port Firebird to ARM. However, I am concerned that IBPP may not be compatible with the new version of Firebird.* *IBPP is a popular Firebird driver for C++. It is used by many developers to connect to Firebird databases from their C++ applications.* *If IBPP is not compatible with the new version of Firebird, it will mean that developers who use IBPP will not be able to use Firebird on their Mac M1 and M2 devices.* *Therefore, I would like to know if there are any plans to update the IBPP code to support the new or future version of Firebird.* *I would be grateful for any information you can provide.* *Thank you for your time and consideration.* *Sincerely,* DJ Motte |
From: djm <mot...@ne...> - 2023-09-03 01:26:44
|
Hello, IBPP is a very nice tool for Firebird. Is the last version 2.5.x of IBPP compatible with Mac M1 M2 ? If not is it intended to do so. I do not think that Firebird is ready for Mac M1 M2. May be soon or never ? Best Regards. |
From: Mick A. <mi...@ma...> - 2021-05-06 10:44:12
|
Thank you Oliver, I am much obliged Mick |
From: Olivier M. <om...@in...> - 2021-05-05 20:43:06
|
I found this: https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-apiods-api.html <https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-apiods-api.html> as a pointer to the new API I mentioned earlier. It may be a bit low-level to be used from application code directly though. It certainly is possible to re-engineer IBPP over that interface, and change significantly some things of the past at the same time. But I am not in the Firebird world anymore for years and that would be unreasonable to offer to commit myself to the job, even though I'd love to. __ Best Regards, Meilleures salutations, Met vriendelijke groeten, Mit freundlichen Grüßen, Olivier Mascia > Le 5 mai 2021 à 15:10, Olivier Mascia <om...@in...> a écrit : > > Hello Mick! > > Unfortunately, IBPP is very old code by now and current standards. > IBPP code was a good place to start to gather knowledge of the C API to Firebird. > But as far as I know, Firebird has had a native C++ API for a long time now, so dependence on an external C++ shell on top of the C historical API is probably not useful anymore. You should check this and get pointers to the right documentation through https://firebirdsql.org <https://firebirdsql.org/> I guess. > > This IBPP project was left up and running for documentation purpose but the code itself has not been maintained for years and probably won't be. > > Yet I see that the current pages on firebirdsql.org <http://firebirdsql.org/> continue to list IBPP within the page https://firebirdsql.org/en/drivers-documentation/ <https://firebirdsql.org/en/drivers-documentation/> !! And I don't seem to find documentation to the C++ API which was brewing (years ago) when I had to leave the project for personal business re-orientation matters. > > Maybe you should reach people at firebirdsql.org <http://firebirdsql.org/> for guidance where to find documentation for the C++ API (and the C one too - I can't find it anymore on the web pages). > > __ > Best Regards, Meilleures salutations, Met vriendelijke groeten, Mit freundlichen Grüßen, > Olivier Mascia > >> Le 5 mai 2021 à 12:46, Mick Arundell <mi...@ma...> a écrit : >> >> Hi All >> >> I've been a long time user of Firebird mainly Delphi <-> Firebird. >> >> Now that I've transitioned to Linux (and getting older) I'd like to look and work under the hood. I thought that IBPP might be a good place to start, >> >> Can you advise me please? >> >> >> Mick > > > _______________________________________________ > ibpp-discuss mailing list > Post to ibp...@li... > Settings https://lists.sourceforge.net/lists/listinfo/ibpp-discuss > http://www.ibpp.org |
From: Olivier M. <om...@in...> - 2021-05-05 13:23:19
|
Hello Mick! Unfortunately, IBPP is very old code by now and current standards. IBPP code was a good place to start to gather knowledge of the C API to Firebird. But as far as I know, Firebird has had a native C++ API for a long time now, so dependence on an external C++ shell on top of the C historical API is probably not useful anymore. You should check this and get pointers to the right documentation through https://firebirdsql.org <https://firebirdsql.org/> I guess. This IBPP project was left up and running for documentation purpose but the code itself has not been maintained for years and probably won't be. Yet I see that the current pages on firebirdsql.org <http://firebirdsql.org/> continue to list IBPP within the page https://firebirdsql.org/en/drivers-documentation/ <https://firebirdsql.org/en/drivers-documentation/> !! And I don't seem to find documentation to the C++ API which was brewing (years ago) when I had to leave the project for personal business re-orientation matters. Maybe you should reach people at firebirdsql.org <http://firebirdsql.org/> for guidance where to find documentation for the C++ API (and the C one too - I can't find it anymore on the web pages). __ Best Regards, Meilleures salutations, Met vriendelijke groeten, Mit freundlichen Grüßen, Olivier Mascia > Le 5 mai 2021 à 12:46, Mick Arundell <mi...@ma...> a écrit : > > Hi All > > I've been a long time user of Firebird mainly Delphi <-> Firebird. > > Now that I've transitioned to Linux (and getting older) I'd like to look and work under the hood. I thought that IBPP might be a good place to start, > > Can you advise me please? > > > Mick |
From: Mick A. <mi...@ma...> - 2021-05-05 11:04:28
|
Hi All I've been a long time user of Firebird mainly Delphi <-> Firebird. Now that I've transitioned to Linux (and getting older) I'd like to look and work under the hood. I thought that IBPP might be a good place to start, Can you advise me please? Mick |
From: Milan B. <mil...@gm...> - 2019-11-15 14:35:03
|
On pet, 15. nov 2019. at 12.03 Harald Wolf <ib...@on...> wrote: > Hi, i need some help. Is this List alive? > i get no sql exception in my code if a statement causes an Error. > The following code works without exceptions nor any other. > > tr = IBPP::TransactionFactory(db); > IBPP::Statement st = IBPP::StatementFactory(db, tr); > db->Connect(); > tr->Start(); > st->Execute("blabla"); > tr->Commit(); > > how can i get sql error codes? Make sure you enable C++ exceptions in your compiler settings and then use try..catch. M. -- Milan Babuskov http://www.guacosoft.com |
From: Harald W. <ib...@on...> - 2019-11-15 11:02:09
|
Hi, i need some help. Is this List alive? i get no sql exception in my code if a statement causes an Error. The following code works without exceptions nor any other. tr = IBPP::TransactionFactory(db); IBPP::Statement st = IBPP::StatementFactory(db, tr); db->Connect(); tr->Start(); st->Execute("blabla"); tr->Commit(); how can i get sql error codes? |
From: Olivier M. <om...@in...> - 2018-05-01 21:29:40
|
> Le 1 mai 2018 à 23:16, Charles Henze <Cha...@dd...> a écrit : > > Thank you for the update. You answered my curiosity about this statement: > > " Many have reported great success with IBPP. > ... > Works on Windows, Linux, Mac OS X, FreeBSD, Solaris, and probably all other Firebird supported platforms. > Actively developed and maintained. " (http://www.firebirdfaq.org/faq9/ ) > > It is a nice project, and IBPP gets lots of praise from the FAQ. > > As for the Firebird native driver for C++, the list at http://www.firebirdfaq.org/cat9/ does not have alternatives to IBPP. > > Best regards, > Charlie Well Charlie, thanks for pointing me that page. For sure the words about IBPP are kind and probably true, at the time that got published - which I don't know but it probably was some years ago. Obviously the page is outdated and the sentence 'Actively developed and maintained' is misleading at least for the last 2 to 3 years. I'll try to contact that site's owner and ask for some change in the text. > As for the Firebird native driver for C++, the list at http://www.firebirdfaq.org/cat9/ does not have alternatives to IBPP. Strange. I'm pretty sure Firebird 3 was meant to get a new API, based on C++. Maybe it just is not listed because that FAQ page is clearly outdated or because it is not an external layer to Firebird, being the native interface. I would suggest that you dig for information from people at Firebird project themselves before choosing your path for your C++ interface. -- Best Regards, Meilleures salutations, Met vriendelijke groeten, Olivier Mascia |
From: Charles H. <Cha...@dd...> - 2018-05-01 21:16:31
|
Thank you for the update. You answered my curiosity about this statement: " Many have reported great success with IBPP. ... Works on Windows, Linux, Mac OS X, FreeBSD, Solaris, and probably all other Firebird supported platforms. Actively developed and maintained. " (http://www.firebirdfaq.org/faq9/ ) It is a nice project, and IBPP gets lots of praise from the FAQ. As for the Firebird native driver for C++, the list at http://www.firebirdfaq.org/cat9/ does not have alternatives to IBPP. Best regards, Charlie -----Original Message----- From: Olivier Mascia [mailto:om...@in...] Sent: Tuesday, May 1, 2018 13:31 To: ibp...@li... Subject: Re: [IBPP-DISCUSS] Current code base and Windows stack corruption on 64-bit > Le 1 mai 2018 à 18:53, Charles Henze <Cha...@dd...> a écrit : > > Hi IBPP team, > > I ran across a problem with the IBPP code on Windows (VS 2017). Access to a Firebird embedded DB using the IBPP wrapper can result in stack corruption for 64-bit. As the post below indicates, the correction was to modify ibase.h as below: > ( > https://stackoverflow.com/questions/36044885/firebird-ibpp-insert-fail > s-silently ) > > 69c69 > < typedef long ISC_STATUS; > --- >> typedef intptr_t ISC_STATUS; > > Should this be rolled back into the source (appropriate ifdef for Windows added)? The ibase.h included in the 2-0-5-1 source is older than that shipped with recent Firebird database examples. However, substitution of the newer ibase.h may break some definitions for LoadLibrary. > Have others tried this? > > Thanks, > Charlie I have not been able (matter of time) to maintain, and certainly not evolve, the old IBPP codebase for _years_. For the last two years or so, I haven't even been involved anymore with Firebird at all, in any way, after a shift of business goals within the company I work for. I suppose IBPP codebase is vastly incompatible with current Firebird releases, which happen well after the last IBPP maintenance occurred. I am not well informed, because I have been away from Firebird evolution for a long time, but as far as I remember things which were ongoing at that time, Firebird should have today his own API designed natively in C++. I suppose the old C API, inherited itself from ages ago, has been kept around for compatibility. So maybe it still makes sense to use IBPP - talking to that C API instead of refactoring applications to use the native C++ interface of Firebird. But it implies using whatever newer version of ibase.h is available today from Firebird API and adjust IBPP source code (and public interface if needed) where maybe required. > However, substitution of the newer ibase.h may break some definitions for LoadLibrary. That's the right path to follow : use the latest ibase.h and fix whatever necessary on IBPP side. Depending on changes that were made to ibase.h by the Firebird project, that may complicate or not support of connections to older versions of Firebird. I would recommend to completely overhaul the design of the row representation though. That was a goal at some point but any effort in that area of IBPP was killed by our business shift. If someone wants to take over the IBPP project at sourceforge, please contact me with a kind of resume, I would then retire myself from the project, something I should probably have done a long time ago. We loved using Firebird (I had been a Firebird Foundation committee member for some years, and my company was a sponsor for a year or two) so the decision to move away wasn't based on or due to Firebird. -- Best Regards, Meilleures salutations, Met vriendelijke groeten, Olivier Mascia ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ ibpp-discuss mailing list Post to ibp...@li... Settings https://lists.sourceforge.net/lists/listinfo/ibpp-discuss http://www.ibpp.org |
From: Olivier M. <om...@in...> - 2018-05-01 20:31:08
|
> Le 1 mai 2018 à 18:53, Charles Henze <Cha...@dd...> a écrit : > > Hi IBPP team, > > I ran across a problem with the IBPP code on Windows (VS 2017). Access to a Firebird embedded DB using the IBPP wrapper can result in stack corruption for 64-bit. As the post below indicates, the correction was to modify ibase.h as below: > ( https://stackoverflow.com/questions/36044885/firebird-ibpp-insert-fails-silently ) > > 69c69 > < typedef long ISC_STATUS; > --- >> typedef intptr_t ISC_STATUS; > > Should this be rolled back into the source (appropriate ifdef for Windows added)? The ibase.h included in the 2-0-5-1 source is older than that shipped with recent Firebird database examples. However, substitution of the newer ibase.h may break some definitions for LoadLibrary. > Have others tried this? > > Thanks, > Charlie I have not been able (matter of time) to maintain, and certainly not evolve, the old IBPP codebase for _years_. For the last two years or so, I haven't even been involved anymore with Firebird at all, in any way, after a shift of business goals within the company I work for. I suppose IBPP codebase is vastly incompatible with current Firebird releases, which happen well after the last IBPP maintenance occurred. I am not well informed, because I have been away from Firebird evolution for a long time, but as far as I remember things which were ongoing at that time, Firebird should have today his own API designed natively in C++. I suppose the old C API, inherited itself from ages ago, has been kept around for compatibility. So maybe it still makes sense to use IBPP - talking to that C API instead of refactoring applications to use the native C++ interface of Firebird. But it implies using whatever newer version of ibase.h is available today from Firebird API and adjust IBPP source code (and public interface if needed) where maybe required. > However, substitution of the newer ibase.h may break some definitions for LoadLibrary. That's the right path to follow : use the latest ibase.h and fix whatever necessary on IBPP side. Depending on changes that were made to ibase.h by the Firebird project, that may complicate or not support of connections to older versions of Firebird. I would recommend to completely overhaul the design of the row representation though. That was a goal at some point but any effort in that area of IBPP was killed by our business shift. If someone wants to take over the IBPP project at sourceforge, please contact me with a kind of resume, I would then retire myself from the project, something I should probably have done a long time ago. We loved using Firebird (I had been a Firebird Foundation committee member for some years, and my company was a sponsor for a year or two) so the decision to move away wasn't based on or due to Firebird. -- Best Regards, Meilleures salutations, Met vriendelijke groeten, Olivier Mascia |
From: Charles H. <Cha...@dd...> - 2018-05-01 17:09:04
|
Hi IBPP team, I ran across a problem with the IBPP code on Windows (VS 2017). Access to a Firebird embedded DB using the IBPP wrapper can result in stack corruption for 64-bit. As the post below indicates, the correction was to modify ibase.h as below: ( https://stackoverflow.com/questions/36044885/firebird-ibpp-insert-fails-silently ) 69c69 < typedef long ISC_STATUS; --- > typedef intptr_t ISC_STATUS; Should this be rolled back into the source (appropriate ifdef for Windows added)? The ibase.h included in the 2-0-5-1 source is older than that shipped with recent Firebird database examples. However, substitution of the newer ibase.h may break some definitions for LoadLibrary. Have others tried this? Thanks, Charlie |
From: Jozo L. <joz...@li...> - 2017-04-15 20:33:59
|
Dear All, I'm a beginner in programming so please be gentle…. I'm running Qt5.8. with MinGW, also installed Firebird3. I'm sending the content of my .h, .cpp, .pro file and compile output. Could you please look at it and give me an advice how to resolve this. Thanks in advance and kind regards. Jozo //qt .pro file looks like this #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += main.cpp mainview.cpp HEADERS += mainview.h ibpp-core/_ibpp.h ibpp-core/ibase.h ibpp-core/iberror.h ibpp-core/ibpp.h FORMS += mainview.ui #IBPP win32 { LIBS += -LC:/Firebird/Firebird_3_0/lib LIBS += -lAdvapi32 -lfbclient_ms DEFINES += IBPP_WINDOWS DEFINES += MBCS DEFINES -= -UNICODE QMAKE_CXXFLAGS += -DIBPP_WINDOWS #LIBS += -LC:/Firebird/Firebird_2_5/lib } INCLUDEPATH += c:/Firebird/Firebird_3_0/include //mainview.cpp<https://mainview.cpp/> #include "mainview.h" #include "ui_mainview.h" #include <iostream> #include <string> #include <QDebug> #include "ibpp-core/ibpp.h" using namespace IBPP; using namespace std; MainView::MainView(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainView) { ui->setupUi(this); db=IBPP::DatabaseFactory(serverName,dbName,userName, password); } MainView::~MainView() { delete ui; } //mainview.h<https://mainview.h/> #ifndef MAINVIEW_H #define MAINVIEW_H #include <QMainWindow> #include <string> #include "ibpp-core/ibpp.h" #include "ibpp-core/_ibpp.h" using namespace IBPP; using namespace std; namespace Ui { class MainView; } class MainView : public QMainWindow { Q_OBJECT public: explicit MainView(QWidget *parent = 0); ~MainView(); private: Ui::MainView ui; Database db; const string dbName = "C:/Firebird/Firebird_3_0/examples/JLEKOTEST.FDB"; const string serverName = "localhost"; const string userName = "SYSDBA"; const string password = "***"; }; #endif // MAINVIEW_H //error looks like this: 21:55:22: Running steps for project qtfb2... 21:55:22: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" clean C:\Qt\5.8\mingw53_32\bin\qmake.exe -o Makefile ..\qtfb2\qtfb2.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug clean mingw32-make[1]: Entering directory 'C:/Users/jozol/OneDrive/APP-DEMO/build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug' del debug\moc_predefs.h del debug\moc_mainview.cpp del ui_mainview.h del debug\main.o debug\mainview.o debug\moc_mainview.o mingw32-make[1]: Leaving directory 'C:/Users/jozol/OneDrive/APP-DEMO/build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug' C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Release clean mingw32-make[1]: Entering directory 'C:/Users/jozol/OneDrive/APP-DEMO/build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug' del release\moc_predefs.h Could Not Find C:\Users\jozol\OneDrive\APP-DEMO\build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug\release\moc_predefs.h del release\moc_mainview.cpp Could Not Find C:\Users\jozol\OneDrive\APP-DEMO\build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug\release\moc_mainview.cpp del ui_mainview.h Could Not Find C:\Users\jozol\OneDrive\APP-DEMO\build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug\ui_mainview.h del release\main.o release\mainview.o release\moc_mainview.o Could Not Find C:\Users\jozol\OneDrive\APP-DEMO\build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug\release\main.o mingw32-make[1]: Leaving directory 'C:/Users/jozol/OneDrive/APP-DEMO/build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug' 21:55:24: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally. 21:55:24: Configuration unchanged, skipping qmake step. 21:55:24: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory 'C:/Users/jozol/OneDrive/APP-DEMO/build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug' C:\Qt\5.8\mingw53_32\bin\uic.exe ..\qtfb2\mainview.ui -o ui_mainview.h g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_DEPRECATED_WARNINGS -DIBPP_WINDOWS -DMBCS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\qtfb2 -I. -Ic:\Firebird\Firebird_3_0\include -IC:\Qt\5.8\mingw53_32\include -IC:\Qt\5.8\mingw53_32\include\QtWidgets -IC:\Qt\5.8\mingw53_32\include\QtGui -IC:\Qt\5.8\mingw53_32\include\QtANGLE -IC:\Qt\5.8\mingw53_32\include\QtSql -IC:\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -IC:\Qt\5.8\mingw53_32\mkspecs\win32-g++ -o debug\main.o ..\qtfb2\main.cpp g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_DEPRECATED_WARNINGS -DIBPP_WINDOWS -DMBCS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\qtfb2 -I. -Ic:\Firebird\Firebird_3_0\include -IC:\Qt\5.8\mingw53_32\include -IC:\Qt\5.8\mingw53_32\include\QtWidgets -IC:\Qt\5.8\mingw53_32\include\QtGui -IC:\Qt\5.8\mingw53_32\include\QtANGLE -IC:\Qt\5.8\mingw53_32\include\QtSql -IC:\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -IC:\Qt\5.8\mingw53_32\mkspecs\win32-g++ -o debug\mainview.o ..\qtfb2\mainview.cpp g++ -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -dM -E -o debug\moc_predefs.h C:\Qt\5.8\mingw53_32\mkspecs\features\data\dummy.cpp C:\Qt\5.8\mingw53_32\bin\moc.exe -DUNICODE -DQT_DEPRECATED_WARNINGS -DIBPP_WINDOWS -DMBCS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN --include debug/moc_predefs.h -IC:/Qt/5.8/mingw53_32/mkspecs/win32-g++ -IC:/Users/jozol/OneDrive/APP-DEMO/qtfb2 -Ic:/Firebird/Firebird_3_0/include -IC:/Qt/5.8/mingw53_32/include -IC:/Qt/5.8/mingw53_32/include/QtWidgets -IC:/Qt/5.8/mingw53_32/include/QtGui -IC:/Qt/5.8/mingw53_32/include/QtANGLE -IC:/Qt/5.8/mingw53_32/include/QtSql -IC:/Qt/5.8/mingw53_32/include/QtCore -I. -IC:/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include -IC:/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include-fixed -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++ -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32 -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/backward ..\qtfb2\mainview.h -o debug\moc_mainview.cpp g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_DEPRECATED_WARNINGS -DIBPP_WINDOWS -DMBCS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\qtfb2 -I. -Ic:\Firebird\Firebird_3_0\include -IC:\Qt\5.8\mingw53_32\include -IC:\Qt\5.8\mingw53_32\include\QtWidgets -IC:\Qt\5.8\mingw53_32\include\QtGui -IC:\Qt\5.8\mingw53_32\include\QtANGLE -IC:\Qt\5.8\mingw53_32\include\QtSql -IC:\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -IC:\Qt\5.8\mingw53_32\mkspecs\win32-g++ -o debug\moc_mainview.o debug\moc_mainview.cpp g++ -Wl,-subsystem,windows -mthreads -o debug\qtfb2.exe debug/main.o debug/mainview.o debug/moc_mainview.o -lmingw32 -LC:\Qt\5.8\mingw53_32\lib C:\Qt\5.8\mingw53_32\lib\libqtmaind.a -LC:\utils\my_sql\my_sql\lib -LC:\utils\postgresql\pgsql\lib -lshell32 -LC:\Firebird\Firebird_3_0\lib -lAdvapi32 -lfbclient_ms C:\Qt\5.8\mingw53_32\lib\libQt5Widgetsd.a C:\Qt\5.8\mingw53_32\lib\libQt5Guid.a C:\Qt\5.8\mingw53_32\lib\libQt5Sqld.a C:\Qt\5.8\mingw53_32\lib\libQt5Cored.a debug/mainview.o: In function `ZN4IBPP15DatabaseFactoryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_': C:\Users\jozol\OneDrive\APP-DEMO\build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug/../qtfb2/ibpp-core/ibpp.h:875: undefined reference to `IBPP::DatabaseFactory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' collect2.exe: error: ld returned 1 exit status Makefile.Debug:69: recipe for target 'debug\qtfb2.exe' failed mingw32-make[1]: *** [debug\qtfb2.exe] Error 1 mingw32-make[1]: Leaving directory 'C:/Users/jozol/OneDrive/APP-DEMO/build-qtfb2-Desktop_Qt_5_8_0_MinGW_32bit-Debug' Makefile:34: recipe for target 'debug' failed mingw32-make: *** [debug] Error 2 21:55:38: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited with code 2. Error while building/deploying project qtfb2 (kit: Desktop Qt 5.8.0 MinGW 32bit) When executing step "Make" 21:55:38: Elapsed time: 00:17. Jozo Leko joz...@ou... 091-324-8070 |
From: Jozo L. <joz...@li...> - 2017-04-10 21:16:14
|
Hi, Thisis my first post asking for help. I'm a noob trying to learn about firebird and qt c++. In project created with Qt when trying to compile it I get the following error: C:\Users\jozol\OneDrive\APP-DEMO\qtFB\mainview.cpp:23: error: undefined reference to `IBPP::DatabaseFactory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' Could you help please. Thanks. Jozo |
From: Jesus A. <jay...@ya...> - 2017-01-21 15:12:32
|
Using visual studio community 2015 C++, with default configuration over the tests folder in vs2005, after the compiler makes changes it gets the executable in debug and release modes. Debug and release mode executables ran and creates c:\TEST.fbk Compile ibpp: project as ibppVCThe source that is in core from ibpp-2-5-3-1-src, is now in c:\My Documents\ibpp\core.New project, MFC application, named ibppVC, dialog boxes based, MFC static library. Properties: GENERAL: no UNICODE, no CLR VC++ Directories, SOURCE FILES DIRECTORIES: c:\My Documents\ibpp\core(added) C/C++ GENERAL Additional include directories: c:\My Documents\ibpp\core(added) PREPROCESOR Defined preprocesor add: _CRT_NONSTDC_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS _CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_WARNINGS_GLOBALS IBPP_WINDOWS CODE GENERATION Set Exceptions yes/EHsc. Language RTTI yes/GR, in ibppVCDlg: #include "ibpp.h"in every cpp in c:\My Documents\ibpp\core, added #include "stdafx.h"in project added filters for source code and headers from c:\My Documents\ibpp\coreIt goes well. ChuCho |
From: Sudheer P. <sud...@gm...> - 2016-11-26 13:24:49
|
Hi, Can I use ibpp-2.5.3 with Firebird 3.0 if I am not using bool type and packages? Thanks and regards. Sudheer |
From: chen h. <ch...@ou...> - 2016-06-14 23:50:47
|
Sounds great. Thanks a lot, Olivier. From: om...@in... Date: Sat, 11 Jun 2016 14:42:41 +0200 To: ibp...@li... Subject: Re: [IBPP-DISCUSS] segment fault in DatabaseImpl::Disconnect > Le 8 juin 2016 à 22:22, chen hsu <ch...@ou...> a écrit : > > Recently I hit a segment fault in ibpp/database.cpp when deleting the database object, i.e. DatabaseImpl::Disconnect(). This function will call into Inactivate(), who iterates thru mStatements entries, and calls StatementImpl::DetachDatabaseImpl(), which in turn, calls into DatabaseImpl::DetachStatementImpl(), which will erase the corresponding entry from DatabaseImpl.mStatements vector. And a segment fault happened there, as mStatements has actually been overwritten with some garbage string. is it known issue? I doubt there might be some reentrant problem. Thanks. Indeed, there is one. I will upload a new version soon (next week) where this is fixed, along with some important announce about the project. -- Meilleures salutations, Met vriendelijke groeten, Best Regards, Olivier Mascia, integral.be/om ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e _______________________________________________ ibpp-discuss mailing list Post to ibp...@li... Settings https://lists.sourceforge.net/lists/listinfo/ibpp-discuss http://www.ibpp.org |
From: Olivier M. <om...@in...> - 2016-06-11 12:54:49
|
> Le 8 juin 2016 à 22:22, chen hsu <ch...@ou...> a écrit : > > Recently I hit a segment fault in ibpp/database.cpp when deleting the database object, i.e. DatabaseImpl::Disconnect(). This function will call into Inactivate(), who iterates thru mStatements entries, and calls StatementImpl::DetachDatabaseImpl(), which in turn, calls into DatabaseImpl::DetachStatementImpl(), which will erase the corresponding entry from DatabaseImpl.mStatements vector. And a segment fault happened there, as mStatements has actually been overwritten with some garbage string. is it known issue? I doubt there might be some reentrant problem. Thanks. Indeed, there is one. I will upload a new version soon (next week) where this is fixed, along with some important announce about the project. -- Meilleures salutations, Met vriendelijke groeten, Best Regards, Olivier Mascia, integral.be/om |
From: chen h. <ch...@ou...> - 2016-06-08 20:22:09
|
Recently I hit a segment fault in ibpp/database.cpp when deleting the database object, i.e. DatabaseImpl::Disconnect(). This function will call into Inactivate(), who iterates thru mStatements entries, and calls StatementImpl::DetachDatabaseImpl(), which in turn, calls into DatabaseImpl::DetachStatementImpl(), which will erase the corresponding entry from DatabaseImpl.mStatements vector. And a segment fault happened there, as mStatements has actually been overwritten with some garbage string. is it known issue? I doubt there might be some reentrant problem. Thanks. |
From: Lucas S. <luc...@gm...> - 2016-04-09 00:47:44
|
Hello Again, sorry for the long time... Olivier Mascia, I want your opinion... in the parameters list, do you think to be preferable to use case sensitive or insensitive? because the code to compare the insensitive strings... well... I didn't liked it, here it is: (PS: I don't work to much with C++, so I know this isn't the best options... Any idea/help is welcome) bool icasecmp(const std::string& l, const std::string& r); bool icasecmp(const std::wstring& l, const std::wstring& r); bool icasecmp(const std::string& l, const std::string& r) { return l.size() == r.size() && equal(l.cbegin(), l.cend(), r.cbegin(), [](std::string::value_type l1, std::string::value_type r1) { return std::toupper(l1) == std::toupper(r1); }); } bool icasecmp(const std::wstring& l, const std::wstring& r) { return l.size() == r.size() && equal(l.cbegin(), l.cend(), r.cbegin(), [](std::wstring::value_type l1, std::wstring::value_type r1) { return std::towupper(l1) == std::towupper(r1); }); } Thanks! On Mon, Oct 5, 2015 at 8:51 PM, Lucas Schatz <luc...@gm...> wrote: > Good idea! But first, I'll do the part that I'm supposed to do, after > that,we can talk more about your idea! > To do this work properly, I'll need to know if the statement is an (update > or )insert, update or delete, because the structure will be different in > DDLs (I can't replace parameters in DDLs) > For now, I'm simply looking for the first valid word [INSERT, UPDATE, > DELETE, WITH, EXECUTE P(ROCEDURE)]... > But I don't think that this solution is good enough/elegant. If you have > an sugestion, I'll be glad > > Thanks! > > > > > > On Sun, Oct 4, 2015 at 8:20 AM, Olivier Mascia <om...@in...> wrote: > >> > Le 3 oct. 2015 à 23:15, Lucas Schatz <luc...@gm...> a écrit : >> > >> > Hi, is there interest to add support to add parameters by name, instead >> of >> > just "?" >> > I'm doing this by myself, but I want to know if IBPP team has interest >> in >> > the patch. >> > >> > It will work like this example: >> > >> > statement->Prepare("INSERT INTO TEST_TABLE (ID, COLUMN2, COL3, ABC) >> > VALUES (:IDVALUE, :COL2, ?, :ABC)"); >> > st2->Set("IDVALUE", 1); >> > st2->Set("COL2", "AAAA"); >> > st2->Set(3, 12.34); # Regular use >> > st2->Set("abc", 12344.0); # Case insensitive >> >> Hello, yes, why not, thanks in advance. >> >> Though it was never programmed / finalized, another idea along the same >> lines was this: >> >> statement->Prepare("INSERT INTO TEST_TABLE (ID, COLUMN2, COL3, ABC) >> VALUES (?, "data", ?, ?)"); >> st2->Set("ID", 1); >> st2->Set(3, 12.34); # Regular use >> st2->Set("abc", 12344.0); # Case insensitive >> >> It allows to re-use the column names from the INTO part of the statement >> to match them to the '?' instead of assigning yet other pseudo variable >> names. I intentionally added a constant data in the VALUES part, because >> this is something which happen and must be accounted for. It too implies to >> parse correctly the statement, which is something that the current IBPP >> implementation doesn't have to do (merely count the '?' to optimize some >> resources allocation, which is not a proper parse. >> >> -- >> Meilleures salutations, Vriendelijke groeten, Best Regards, >> >> Olivier Mascia (from mobile device) >> tipgroup.com/om >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> ibpp-discuss mailing list >> Post to ibp...@li... >> Settings https://lists.sourceforge.net/lists/listinfo/ibpp-discuss >> http://www.ibpp.org > > > |
From: Olivier M. <om...@in...> - 2015-11-11 11:19:28
|
[Was posted to flamerobin-devel list. Here is a copy.] If I'm not mistaken, and unless some rewrite was done at some point which I would not have seen happen, Flamerobin currently depends on IBPP which has not been updated for a while (some years, except for minor details), and does not expose support for specific features of Firebird 3. Anyway, the people behind initial IBPP (version up to 2.x) will now start using Firebird 3 in real projects, now that the project officially reached release candidate. For the last year(s) while FB 3 was brewing, these people (my people at TIP Group), partially sponsored (like, hopefully, other groups) the Firebird project, but refrained to push further its dependency on Firebird until the project was able to deliver something 'real'. We even explored some other tracks NOT involving Firebird anymore. It was decided that public Firebird 3 release candidate code would be the trigger for us to revive our Firebird track. And now it's there. Within these next 3 months (I mean somewhere between today and mid-february), we will share with the community how we will interface with Firebird 3 from our C++ projects. There are two paths which were experimented with over these last 2 years. One involves a simple 'upgrade' to IBPP 2.x and offers the advantage of very few code changes in host applications. The other is different, I won't say more for now until it get eventually open-sourced. Either path will be selected, we will retain a single one for our own code and will open-source and support that single one. If it happens to be the path involving the upgraded IBPP, I'm pretty sure Flamerobin project would be able to leverage it quite rapidly. The other path might involve a significant rewrite to host applications, which might not be overwhelming at all from what I know of the code architecture of Flamerobin. -- Meilleures salutations, Met vriendelijke groeten, Best Regards, Olivier Mascia, integral.be/om > Le 11 nov. 2015 à 11:02, marius adrian popa <ma...@gm...> a écrit : > > Flamerobin should work with 2.5.x core features without problems with firebird 3.0 > For example if don't use the new features : bool type , packages > Some of them are usable but they are not surfaced in the right tree (identity , packages ...) > > On Tue, Nov 10, 2015 at 5:14 PM, <val...@ig...> wrote: > Any news on FlameRobin and Firebird 3.0? > > Firebird 3.0 Release Candidate 1 is available for testing > http://www.firebirdsql.org/en/news/firebird-3-0-release-candidate-1-is-available-for-testing-77358/ > > New Development: version 3.0 > Release Candidate 1 has been released in November 2015; > Release Candidate 2 is expected in December 2015. > http://www.firebirdsql.org/en/roadmap/ |
From: <tan...@me...> - 2015-10-05 23:52:10
|
Je suis actuellement en vacances Contactez directement Menlog par mail ou téléphone Mail : technique arobAse menlog.com ( remplacer arobAse par @) Merci d'avance de votre compréhension |
From: Lucas S. <luc...@gm...> - 2015-10-05 23:51:37
|
Good idea! But first, I'll do the part that I'm supposed to do, after that,we can talk more about your idea! To do this work properly, I'll need to know if the statement is an (update or )insert, update or delete, because the structure will be different in DDLs (I can't replace parameters in DDLs) For now, I'm simply looking for the first valid word [INSERT, UPDATE, DELETE, WITH, EXECUTE P(ROCEDURE)]... But I don't think that this solution is good enough/elegant. If you have an sugestion, I'll be glad Thanks! On Sun, Oct 4, 2015 at 8:20 AM, Olivier Mascia <om...@in...> wrote: > > Le 3 oct. 2015 à 23:15, Lucas Schatz <luc...@gm...> a écrit : > > > > Hi, is there interest to add support to add parameters by name, instead > of > > just "?" > > I'm doing this by myself, but I want to know if IBPP team has interest in > > the patch. > > > > It will work like this example: > > > > statement->Prepare("INSERT INTO TEST_TABLE (ID, COLUMN2, COL3, ABC) > > VALUES (:IDVALUE, :COL2, ?, :ABC)"); > > st2->Set("IDVALUE", 1); > > st2->Set("COL2", "AAAA"); > > st2->Set(3, 12.34); # Regular use > > st2->Set("abc", 12344.0); # Case insensitive > > Hello, yes, why not, thanks in advance. > > Though it was never programmed / finalized, another idea along the same > lines was this: > > statement->Prepare("INSERT INTO TEST_TABLE (ID, COLUMN2, COL3, ABC) VALUES > (?, "data", ?, ?)"); > st2->Set("ID", 1); > st2->Set(3, 12.34); # Regular use > st2->Set("abc", 12344.0); # Case insensitive > > It allows to re-use the column names from the INTO part of the statement > to match them to the '?' instead of assigning yet other pseudo variable > names. I intentionally added a constant data in the VALUES part, because > this is something which happen and must be accounted for. It too implies to > parse correctly the statement, which is something that the current IBPP > implementation doesn't have to do (merely count the '?' to optimize some > resources allocation, which is not a proper parse. > > -- > Meilleures salutations, Vriendelijke groeten, Best Regards, > > Olivier Mascia (from mobile device) > tipgroup.com/om > > > ------------------------------------------------------------------------------ > _______________________________________________ > ibpp-discuss mailing list > Post to ibp...@li... > Settings https://lists.sourceforge.net/lists/listinfo/ibpp-discuss > http://www.ibpp.org |
From: <tan...@me...> - 2015-10-04 11:21:32
|
Je suis actuellement en vacances Contactez directement Menlog par mail ou téléphone Mail : technique arobAse menlog.com ( remplacer arobAse par @) Merci d'avance de votre compréhension |
From: Olivier M. <om...@in...> - 2015-10-04 11:20:47
|
> Le 3 oct. 2015 à 23:15, Lucas Schatz <luc...@gm...> a écrit : > > Hi, is there interest to add support to add parameters by name, instead of > just "?" > I'm doing this by myself, but I want to know if IBPP team has interest in > the patch. > > It will work like this example: > > statement->Prepare("INSERT INTO TEST_TABLE (ID, COLUMN2, COL3, ABC) > VALUES (:IDVALUE, :COL2, ?, :ABC)"); > st2->Set("IDVALUE", 1); > st2->Set("COL2", "AAAA"); > st2->Set(3, 12.34); # Regular use > st2->Set("abc", 12344.0); # Case insensitive Hello, yes, why not, thanks in advance. Though it was never programmed / finalized, another idea along the same lines was this: statement->Prepare("INSERT INTO TEST_TABLE (ID, COLUMN2, COL3, ABC) VALUES (?, "data", ?, ?)"); st2->Set("ID", 1); st2->Set(3, 12.34); # Regular use st2->Set("abc", 12344.0); # Case insensitive It allows to re-use the column names from the INTO part of the statement to match them to the '?' instead of assigning yet other pseudo variable names. I intentionally added a constant data in the VALUES part, because this is something which happen and must be accounted for. It too implies to parse correctly the statement, which is something that the current IBPP implementation doesn't have to do (merely count the '?' to optimize some resources allocation, which is not a proper parse. -- Meilleures salutations, Vriendelijke groeten, Best Regards, Olivier Mascia (from mobile device) tipgroup.com/om |