Hi,
i've just uploaded my LetoDBf fork to GIT:
https://github.com/elchs/LetoDBf
After many many months of work i feel it ready enough to post it.
i tried to adress any reported problem or feature wish over the last two years -- and sure, added my own needs and ideas.
The most important: you cannot mix that version with LetoDB, aka you have to recompile your app for LetoDBf server.
Ignore the Changelog, i have not written down my chronology of changes, something that i want to change in future ;-)
A look into README.md and Readme.txt should answer first questions.
Highlights maybe:
share- and lockable HbMemIO tables, client thread safetyness, a two-socket communication with 'delayed error system' ;-), ...
TlDr:
hbmk2 letodb
hbmk2 rddletoaddon
hbmk2 yourapp letodb.hbc
wish much fun
Rolf
--
--
You received this message because you are subscribed to the Google
Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: http://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Many thanks for sharing your work Rolf! This is very much appreciated.
Regards,
Mario
--
--
You received this message because you are subscribed to the Google
Groups "Harbour Users" group.
Unsubscribe: harbour-users+unsubscribe@googlegroups.com
Web: http://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-users+unsubscribe@googlegroups.com.
leto_wUsLog( pUStru, -1, "DEBUG! leto_CloseT area (%lu) %s not found, developer error",
You tried to close a workarea, which is not open ?
You tried to close a workarea, which is not open ?
No, only i used -> hbmk2 letodb.hbp to make a letodb.exe and i receive the warnings messages above
No, only i used -> hbmk2 letodb.hbp to make a letodb.exe and i receive the warnings messages above
Hi to all,
please report also compiler warnings, as i dislike them to have ;-)
I've tried so far myself:
BCC5.5 :-), MsVc8?, two older 32+64bit MinGw, GCC4.6, clang 3.8
Sami, you may try again.
What was an still undetected bug i fixed, if there are still warnings report them but you can 'proceed'.
Thanks
Rolf
--
1. opening same dbf in 2 workareas with different alias names gives an error.
the special case :-), change in letodb.ini for server:
No_Save_Wa = 1
then it shell work
Can you ZAP a copy of that DBF ( to empty it ), then zip-attach it please !
best regards
Rolf
2. my dbf with 90 fields crashes the server...Can you ZAP a copy of that DBF ( to empty it ), then zip-attach it please !
fixed!! -- someone robbed me a zero ;-)
BTW, max 2047 fields - or 2048, i'm unsure ...Hi Francesco,
You should have some mac user compile it... the compiler reports a lot of diferent errors than gcc...
clang 3.8 in mode: pedantic is what the name deserves, sigh -- and i got it quiet.
---
If you did not! fill in the 2. param of DbUseArea( , cDriver, .. ),
it would be *2* lines for you to get a quick test of LetoDBf:
REQUEST LETO
leto_connect( "//IP[:port]/"
( see: tests/basic.prg for drag/drop )
Adaption of DataPath in letodb.ini,
set both: Share_tables/ No_Save_WA to '1' for simultanous 3rd party access.
Done!
###
Nenad,
you may check 'a bit' improved transaction performance, done extra for you ;-)
best Regards
Rolf
to all,
update sources, made some tiny important fixes.
Abe,
can you confirm that LBM_DBSETFILTERARRAY( ary )actually works?
bevor you proceed mit rushmore index ( fixed ? ),
you should have also a look in readme, section 5.2, and also search for leto_VarGetCached.
LetoDBf should be capable of executing any filter *at server side*, they are named: optimized filter.
Then only valid records are send to the client.
Such filter is very fast! and in no way compareable to these,
when all records are send to client and then the client have to do the filtering work.
They are nice dynamical with the variable system and need no special index type ...
wish much fun
Rolf
../../../../../DEVEL/hb32/addons/LetoDBf/source/server/errint.c: In function 'hb_errInternal':
../../../../../DEVEL/hb32/addons/LetoDBf/source/server/errint.c:110:13: warning: null pointer dereference [-Wnull-dereference]
That *was* an intentionally, forcible 'null pointer dereference':
click, crash, exit! -- to test that.
Very exactly what MinGw was detecting, inherited from Harbour, then LetoDB.
Just deleted ==> zero ! warning left For MinGw 6.2
WON, bingo!, \o/
Hi
I try to compile on linux ubuntu...Hi,
i've just uploaded my LetoDBf fork to GIT:
https://github.com/elchs/LetoDBf
After many many months of work i feel it ready enough to post it.
i tried to adress any reported problem or feature wish over the last two years -- and sure, added my own needs and ideas.
The most important: you cannot mix that version with LetoDB, aka you have to recompile your app for LetoDBf server.
Ignore the Changelog, i have not written down my chronology of changes, something that i want to change in future ;-)
A look into README.md and Readme.txt should answer first questions.
Highlights maybe:
share- and lockable HbMemIO tables, client thread safetyness, a two-socket communication with 'delayed error system' ;-), ...
TlDr:
hbmk2 letodb
hbmk2 rddletoaddon
hbmk2 yourapp letodb.hbc
wish much fun
Rolf
--
--
You received this message because you are subscribed to the Google
Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: http://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.
1) I receive some warning messages (Microsoft Visual Studio 10.0) :
- leto_win.c(261) : warning C4701: variable locale 'dwTimeout' potentiellement non initialisée utilisée
- letocl.c(2260) : warning C4244: '=' : conversion de 'HB_ULONG' en 'HB_USHORT', perte possible de données
3) my dbf gives an error on index no 13 and crashes the server.
That is correct, no change: trailing 'path separators' are removed.
Linux siki 4.4.0-51-generic #72-Ubuntu SMP Thu Nov 24 18:29:54 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
siki@siki:~/prg/LetoDBf$ hbmk2 letodb
../../home/siki/prg/LetoDBf/source/server/leto_lnx.c:102:4: warning: ignoring return value of ‘setuid’, declared with attribute warn_unused_result [-Wunused-result]
../../home/siki/prg/LetoDBf/source/server/leto_lnx.c:103:4: warning: ignoring return value of ‘setgid’, declared with attribute warn_unused_result [-Wunused-result]
../../home/siki/prg/LetoDBf/source/server/leto_2.c:294:15: warning: ‘s_iGlobalExit’ is static but declared in inline function ‘leto_ExitGlobal’ which is not static
/tmp/hbmk_9dcg97.dir/letofunc.o: In function `leto_Reccount':
letofunc.c:(.text+0xa69): undefined reference to `ultostr'
...
hbmk2[letodb]: Error: Running linker. 1
gcc ....
gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Hi Rolf, tested in fresh h32 and hb34, no warnings
better than to have no compiler warnings is to have this Valgrind report,
related to client lib and server itself, for the parts intensively tested:
---
HEAP SUMMARY:
in use at exit: 0 bytes in 0 blocks
All heap blocks were freed -- no leaks are possible
ERROR SUMMARY:
0 errors from 0 contexts (suppressed: 0 from 0)
---
In my words: no unmaintained even single byte was found.
My expectation: if it runs, it will run for long time.
The both up now reported server crashes were not by chance, but caused by too
less calculated RAM to allocate -- happened with first try, and fixed them.
### Performance:
the bottleneck for the server is the network itself, else it would be faster.
So if you have a 10 GBit network, LetoDBf will serve faster as for 1 GBit, but
not 10 times :-)
Some results for:
120 000 records, 101 bytes record length, one memo field
classic append, all fields set: 18 s ~ 6500 / s
transaction encapsulated append: < 2 s ~ 65 000 / s
skip top to bottom, change 2 fields
- with one FLock: 5 s
- with RLock/ DbUnlock: 18 s
skip top to bottom to collect/ sum a field content: ~ 1 s
With temporary adjusting the default value for the skip-buffer, plus using
traffic compression, it shell be possible to skip through ~ half a million
records per second.
Above is not significant faster for hbMemIO tables, cause the network limit,
and max request rate ( ping -> pong ) is ~ 10K / s for 1 GBit.
###
check from time to time, if new source is available -- update best to last version.
BTW, i have added variable type: "A" == array to the list of possible type for the leto_Var*() system.
stay tuned
elch
Yeah, but... ;-)
siki@siki:~/prg/LetoDBf$ hbmk2 letodbsvc.hbp
../../home/siki/prg/LetoDBf/source/server/letofunc.c: In function
‘leto_dbfCopy’:
../../home/siki/prg/LetoDBf/source/server/letofunc.c:5363:4:
warning: ‘errCode’ may be used uninitialized in this function
[-Wmaybe-uninitialized]
hb_fsSetFError( errCode );
^
/tmp/hbmk_hjvd9j.dir/lz4net.o: In function `hb_lz4netClose':
lz4net.c:(.text+0x1f0): multiple definition of `hb_lz4netClose'
/tmp/hbmk_hjvd9j.dir/lz4net.o:lz4net.c:(.text+0x1f0): first
defined here
/tmp/hbmk_hjvd9j.dir/lz4net.o: In function `hb_lz4netOpen':
lz4net.c:(.text+0x250): multiple definition of `hb_lz4netOpen'
/tmp/hbmk_hjvd9j.dir/lz4net.o:lz4net.c:(.text+0x250): first
defined here
/tmp/hbmk_hjvd9j.dir/lz4net.o: In function `hb_lz4netEncryptKey':
lz4net.c:(.text+0x2c0): multiple definition of
`hb_lz4netEncryptKey'
/tmp/hbmk_hjvd9j.dir/lz4net.o:lz4net.c:(.text+0x2c0): first
defined here
/tmp/hbmk_hjvd9j.dir/lz4net.o: In function `hb_lz4netEncryptTest':
lz4net.c:(.text+0x310): multiple definition of
`hb_lz4netEncryptTest'
/tmp/hbmk_hjvd9j.dir/lz4net.o:lz4net.c:(.text+0x310): first
defined here
/tmp/hbmk_hjvd9j.dir/lz4net.o: In function `hb_lz4netEncrypt':
lz4net.c:(.text+0x350): multiple definition of `hb_lz4netEncrypt'
/tmp/hbmk_hjvd9j.dir/lz4net.o:lz4net.c:(.text+0x350): first
defined here
/tmp/hbmk_hjvd9j.dir/lz4net.o: In function `hb_lz4netDecrypt':
lz4net.c:(.text+0x620): multiple definition of `hb_lz4netDecrypt'
/tmp/hbmk_hjvd9j.dir/lz4net.o:lz4net.c:(.text+0x620): first
defined here
collect2: error: ld returned 1 exit status
hbmk2[letodbsvc]: Error: Running linker. 1
gcc '/tmp/hbmk_hjvd9j.dir/server.o'
'/tmp/hbmk_hjvd9j.dir/errorsys.o' '/tmp/hbmk_hjvd9j.dir/common.o'
'/tmp/hbmk_hjvd9j.dir/errint.o' '/tmp/hbmk_hjvd9j.dir/leto_lnx.o'
'/tmp/hbmk_hjvd9j.dir/letoacc.o' '/tmp/hbmk_hjvd9j.dir/letovars.o'
'/tmp/hbmk_hjvd9j.dir/letofunc.o'
'/tmp/hbmk_hjvd9j.dir/letolist.o' '/tmp/hbmk_hjvd9j.dir/leto_2.o'
'/tmp/hbmk_hjvd9j.dir/blowfish.o'
'/tmp/hbmk_hjvd9j.dir/common_c.o' '/tmp/hbmk_hjvd9j.dir/lz4net.o'
'/tmp/hbmk_hjvd9j.dir/lz4.o' '/tmp/hbmk_hjvd9j.dir/lz4net.o'
'/tmp/hbmk_hjvd9j.dir/PMurHash.o'
'/tmp/hbmk_hjvd9j.dir/hbmk_rprx2m.o' -Wl,--start-group -lhbmemio
-lhbct -lhbextern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage
-lgtcgi -lgtpca -lgtstd -lgttrm -lhbrdd -lhbuddall -lhbusrrdd
-lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix
-lhbmacro -lhbcplr -lhbpp -lhbcommon -lm -lpthread -ldl -lrt -lz
-lhbpcre -Wl,--end-group -s -obin/letodb
-L/opt/clip/harbour/lib/linux/gcc
siki@siki:~/prg/LetoDBf$ hbmk2 letodbaddon.hbp
hbmk2: Compiling Harbour sources...
hbmk2: Compiling...
../../../../source/server/letofunc.c: In function ‘leto_dbfCopy’:
../../../../source/server/letofunc.c:5363:4: warning: ‘errCode’
may be used uninitialized in this function [-Wmaybe-uninitialized]
hb_fsSetFError( errCode );
^
hbmk2: Linking... bin/letodb
hbmk2[letodbaddon]: Warning: Copying bin/letodb.ini to
/etc/letodb.ini failed
with 5.
best regards
Davor
not <all> .hbps' are for you :-)
You will get less, the more you try ;-)
siki@siki:~/prg/LetoDBf$ hbmk2 letodbsvc.hbp
letodbsvc.hbp is for compile the server as "service" for Windovs.
But thanks for the hint!:
a double called file therein after recent wrong fix -- fixed for others.
siki@siki:~/prg/LetoDBf$ hbmk2 letodbaddon.hbp
Thanks!, Nenad
THANK YOU
Rolf
not to be misunderstood:
my LetoDBf works fine, 24/7 reliable -- at least it is requirement and my aim :-)
Countercheck it like Nenad did,
very thanks again to him to let me find an remaining important bug.
I reported earlier about origin LetoDB 2.17-b3 misbehaviour.
A correction, in mode: Share_Tables = 0, nobody may notice the "misfeature".
But with Share_Tables = 1, you can watch this:
first user set Rlock() at record 2, writes something into a field
second user set a Flock() when at record 1, and immediate dbunlock(),
then first user for sure is astonished that his Rlock() is gone, no changes
are written with his DbUnlock(), instead in server logs can be find:
Lock required! and warning message shell pop up.
If this pair: Flock()/ DbUnlock()
happens in between another users pair: DbAppend()/ DBUNLOCK(),
you will get: Error Leto/1021 Data type error
with next DbAppend(), DbSkip(), .. -- and an empty ? record().
Cause of this: a 'special' designed file-unlock is needed,
plus Flock() generally have to respect Rlock().
best regards
Rolf
BTW Nenad and others,
with LetoDB you can Flock() even when another users have different records with a Rlock()
-- yours must be just another record than these from other users when doing that file lock.
Then you can dbskip or dbgoto to this record-locked and successful write there.
And both users won't notice something scary happening ...
( it won't work vice versa )
best regards
Rolf
Am Samstag, 10. Dezember 2016 04:11:29 UTC+1 schrieb Nenad Batoćanin:
BTW Nenad and others,
with LetoDB you can Flock() even when another users have different records with a Rlock()
-- yours must be just another record than these from other users when doing that file lock.
Then you can dbskip or dbgoto to this record-locked and successful write there.
And both users won't notice something scary happening ...
( it won't work vice versa )
best regards
Rolf
Am Samstag, 10. Dezember 2016 04:11:29 UTC+1 schrieb Nenad Batoćanin:
Hi Leon,
you need a connection to the server, very recommended is the easy use of:
Leto_Connect( "//...:.../" ) very first at application start.
Take a fresh download,
go into directory "tests",
execute therein a: "buildall" or a: "hbmk2 test_file",
the loopback network shell work any time, so:
test_file 127.0.0.1
what does it report ?
( please, no ! black/white screenshot of that not rocket sience ;)
regards
Rolf
Hi Rolf,
thanks for your work and fixes.
leto_file, leto_direxist, leto_makedir, no longer work (windows 7)
In readme.txt, leto_direxist and leto_dirremove are not specified.
Thanks again for your work and your quick fixes
Best regards
...
How to initialize the server with set date, setd ate format, set epoch ? In dbleto.ini or otherwise?
this shell be done in your sourcecode as you are used to do.
Because very down in DBF it is always the same.
It differs personally, how this is displayed and how the value you want to store must be evaluated
---
But you shell read section: 4.2.2 Codepage support
in the just some minutes ago updated Readme.txt.
THANK you, Leon
xdbf="//127.0.0.1:2812/datas.meu"
xcdx="//127.0.0.1:2812/datas.cdx"
one more again, you *can* do so,
but after connect to server no more an IPaddress:port in path for file is needed.
This will keep your sourcecode being *portable*.
==> xdbf="datas.meu"
If .not. dbCreate( xdbf , { { "DATE_STRNG", "C", 8 , 0 },;
..
XDAT=DATE()-100
REPLACE DATE_STRNG WITH DTOC(XDAT)
OrdCreate( xcdx , "TAG01" , "DTOS(CTOD(DATE_STRNG))" )
storing a "DATE" as 8 character long "C"-value have disadvantages,
i recommend doing it as "D" value, to not loose the information about the century.
Then when you want to display at specic point in application a 4 digits long year for a date value,
you can easyly change temporary the dateformat setting.
Plus you spare one operation for each storing of the date [ DTOC() ]
and spare one operation for retrieving with CTOD()/ DTOS() especially in index key!
..
9 24/11/16
11 14/12/16
7 04/11/16
10 04/12/16
that was a !BUG!, THANKS for reporting.
Must have it broken the logog before initial upload to GIT, some times before it was working ... :-(
Formerly, the only place when new dateformat was transmitted to server during first establishing a connection.
NOW:you will now find a note about CP and dateformat setting for new connections in letodbf.log.
Plus!, it will be checked with each open/ create table it setting meanwhile have changed.
That shell be thoroughly fixed, please verify.
thanks again
Rolf
- Is LETO_GETLOCALIP () a function for the client ?
The following remarks are suggestions but not requests from me.
- How to do if the server has multiple directories or disks for the data?
Datapath = c: \ abc
Datapath = c: \ yyz
Working in 'the root directory' looks a bit like beginners style, especially if its the "C" drive ;-)
My main projects use a directory structure:
./exe
./exe/data
./exe/system
./exe/tmp
where "data" is the directory where all new created files shell go therein.
So i had formerly to set this as <DataPath> in letodb.ini.
And because this reason still exists an ugly hack for accessing files in other directories with:
"../tmp/temp.txt" or "../myini.ini".
After quite a few hours cleaning and experiments,
i have "SET DEFAULT TO" and "SET PATH TO" working at server side.
It must be set before first Leto_Connect() call.
Then i can set "./exe" as <DataPath> root directory in letodb.ini,
and "SET DEFAULT TO data" plus "SET PATH TO system;tmp" where other files
without given specific path element are searched.
So a "/myini.ini" with path separator will point into <DataPath>.
The <DataPath> directory "./exe" is always internally added to "SET PATH TO" search paths,
when at least one other is defined.
If none "DEFAULT/ PATH" is set, <DataPath> will become the "DEFAULT".
When above directory structure is found in: "/mnt/ssd/projects/exe/...",
and you set: "SET DEFAULT TO exe/data",
LetoDBf will know that you mean "/mnt/ssd/projects/exe/data" :-)
- Is there a function to copy any file from the server to a local disk of the client or the opposite ?
Hi Itamar,
file: source/client/letomgmn.c, line: 526
change that: #if 0 ==> #if 1
That is a very scary function, i have outcommented of security reasons.
Because its design is to shoot into yourself foot.
At numerous places in source we find: get the active connection.
If that is the wrong one -- or even none after a try to set an invalid one -- you lost --> crash!
Once a table is opened with a specific connection, there is no need to manually change connection.
To open a table with a specific connection, you can use the "//1.1.1.1/filename" prefix ...
---
Do you have a snippet/ excerpt for me -- i like to think more about ...
best regards
Rolf
addendum, Itamar
Leto_Connect( "cIP:port" ) should also set and change the active connection,
and that is more secure, because it seach for a connection by given: "IP:port".
In opposite to that, this: LETO_SETCURRENTCONNECTION() directly hooks into low level system with a connection-number.
Who likes to remember these: who was number '3' this day .. :-)
Can you try if that Leto_Connect( "IP:port" ) works well as replace !??
best regards
Rolf
1 - I receive some warning messages ( Microsoft Visual Studio 10.0 / windows seven / Version: Harbour 3.2.0dev ) :
2 - dbcreate crashes the server.
each undeclared identifier is reported only once for each function it appea
test_dbf.exe 127.0.0.1 -> the server crashes with error leto 1000 / syntax error
Hi Leon,
i have yesterday strengthened the cause of crash, if 'older' lib did not transmit DEFAULT/PATH setting.
It shell not happen anymore.
If still problems about crash exists, let me know about as then i would have once more to search for a cause.
[ myself correction: in case of MsVc library have a ".lib", not ".a" suffix ]
About 'version-ing': ready there, but refused at this state.
That is all LetoDBf 3.0 on way to 'final state',
and the lastly invention of DEFAULT/ search PATHs at server hopefully the last transmission protocol change for this version.
Also it is very recommended to generally compile both sides: server and client lib, and to not forget about an 'installed' lib.
best regards
Rolf
Very unlikely, Leon
Debug = 21
delete ! file "letodbf.log"
then restart server.
After crash search for two files:
letodb_crashf.log
hb_out.log
!! ZIP-pack !! these both ( if existing ) together with:
letodbf.log,
and attach them -- or send them as PM to my email address.
Rolf
Hi Leon,
after intense search i still have not found the cause -- here at me all fine.
What i can say from your logs:
the DBF is successful created, the answer correct composed,
then it seem to fail (even crash) sending the response .. :-(
That is very unlikely, as a millisecond before must have happened successful an initial request/ response pair for establishing the connection ...
Can we please repeat once again with a fresh source download, i modified some log entries.
( well done, both: letodbf.log and letodbf_00.log )
best regards
Rolf
Hello! Itamar,
you may wonder i even tried ... -- but i am unexperieced with HwGUI.
So i compiled HwGUI 2.20, took example: "samples/grid_5.prg",
modified it for LetoDBf [REQUEST LETO, ... ], and ...
... it crashes ! with an RTE even in original version when try to 'change' record data.
Then i switched back to HwGUI 2.19, there it seem to work.
I added me two index orders, but the browse don't refresh when an index related field changes.
So far it displays same like if DBF is at local drive.
---
Summa: make me please a snippet based on that "grid_5" or something alike,
where i can search what is where happening.
You can send me this here ZIP-packed or as PM to my eMail address ...
Without its getting hard for me to reproduce, to find a cause.
best regards
Rolf
Error DBCMD/2001 Workarea não está em uso: DBSETRELATION Called from ->DBSETRELATION(0)
DbUseArea(.T.,"LETO",'tipo54e.dbf','et',.T.,.F.,'PTISO')
cQuery := "cod_mercad == '"+cCodMerc+"' .AND. dtos(data) >= '"+DToS(dIni)+"' .AND. dtos(data) <= '"+DToS(dFim)+"'"
Index on cod_mercad FOR &cQuery temporary
Error LETO/1006 Erro de abertura: tipo54e.cdx in use by other
Called from ->ORDCREATE(0)
Here other random problem detected with use of memo field.
mObs := cl->observacao
Error BASE/1003 Varißvel nÒo existe: OBSERVACAO
Em sábado, 24 de dezembro de 2016 14:56:30 UTC-3, Itamar Lins escreveu:Hi!
In my case, I think this is a problem caused by the ghost record.
Because while I use dbgobottom() in my dbf(151 recno) browse, it show 152 recno, 1 more record and is the phantom record.
This when use Cache_Records > 1.
i have tested with latest HwGUI (2.20 b3), tried your snippet with XP64.
So i typed:
K_DOWN --> append mode --> 'B' --> K_ENTER
Then i see one record in first position.
Repeating above, i get two records visibile, as it should be, no problems.
What HwGUI version do you use ?
Hello Itamar,
HwGUI browser misbehaviour should be fixed -- found the ugly bug, Thank you!
BTW, HwGUI locks the record in edit mode, but does not unlock afterwards ...
Temporary! index key should now also work,
but you need to set in letodb.ini server mode: No_Save_WA = 1.
---
Leon, are you still here ?
The DBF is created, the answer composed and ! send !
And immediate afterwards in the main! loop a crash !?
Still not explainable to me, and hard to track out the distance, we go after that next year ... ;-)
best regards
Rolf
Hi Henry!, Leon,
::Henry
please refresh LetoDBf sources with my upload a few minutes ago.
LetoDBf server will else not work with your BCC.
::Leon
it was the same problem for your MsVc compiler as for this stoneage BCC:
stack versus heap -- i forgot about this old topic of older compilers :-(
LetoDBf server should work again for you -- please let me know.
best regards
Rolf
01.04.2017 11:55:12 Error installing LetoDB service: 1073
ERROR_SERVICE_EXISTS
1073 (0x431)
The specified service already exists.
01.04.2017 11:59:16 LetoDB service has had some problems: 1063
ERROR_FAILED_SERVICE_CONTROLLER_CONNECT
1063 (0x427)
The service process could not connect to the service controller.
Is this last error because of case sensitive-ness of service names ?
You wrote: "net start letodbf_service", all in lower case.
best regards
Rolf