|
Sorry, but I cannot figure what is going on here, or what is supposed to be going on. Which of the log messages actually identifies any error?
|
|
|
|
|
"select * from hm_dbversion" reports correct result.
but next "select * from hm_settings" report nothing.
If we change sQuery = "select * from hm_settings" directly, it reports proper result.
But it actually useless in practice, and i need to process the dynamical SQL commands in the service.
I can't find the reason and crashed with a barrier. Now I have a doubt in the timing of SQL commands.
I'm so sorry for your efforts, best regards!
|
|
|
|
|
I see references to my_settings and hm_settings , as well as hm_dbversion and my_dbversion ? Are these intentional?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Sorry, I tried to change it intentionally.
The problem was settled. I found that I was so idiot.
I had mistaken by using invalid Error Log function.
ErrorManager::Instance()->ReportError(ErrorManager::Critical, ...);
I'm very sorry to everybody.
And very thanks all of you who had offered kind advises.
|
|
|
|
|
Just noting that in general a windows service would not be used to "manage" a database.
A database might be a windows service (or more than one service.)
A management API would exist on one of those servers.
Then an application, not service, would use that API and present a interface, like a GUI, to a user. The interface could also be a command line console.
A service API that would support the above would support the following
1- A definition of a protocol, such as Rest or more generally http
2- Commands that are sent via the protocol and responses to those commands.
3- The API protocol would be a LAYER on top of the actual management code.
3a - Supporting 3 one should probably add logging.
4- Management layer.
At best from your code it looks something like 3. I suggest you look into learning how to use a logging API.
Additionally there are other aspects involved with getting a windows service to run, and those have nothing to do with the actual database problem. For example
A- Starting/stopping the service
B- Running with the correct user
Member 11967800 wrote: If I give a static command such as "select * from my_settings" instead of sQuery.c_str(), it operated properly, but it doesn't act when it receives a dynamic params.
That doesn't have anything to do with windows service. It has to do with how you implemented the code. At best this looks like 4 above and you should get it that to work BEFORE you attempt to do anything else.
|
|
|
|
|
Thank you for your kind advice.
The problem was in using bad logger function.
I misused it and it disturbed normal activity of my SQLiteDB engine.
Now everything is OK.
Thank you again.
|
|
|
|
|
intelstar venus wrote: The problem was in using bad logger function.
In general that should never happen.
A good logger should not normally impact an application if the logger fails.
|
|
|
|
|
how can i send integer ??
---help---
#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<arpa/inet.h>
int main(int argc , char *argv[])
{
int sock;
struct sockaddr_in server;
char message[1000] , server_reply[2000];
int a;
char r1;
sock = socket(AF_INET , SOCK_STREAM , 0);
if (sock == -1)
{
printf("impossible de creer une socket\n");
}
puts("Socket creer!!!! good job");
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons( 8880 );
puts ("connection au serveur\n") ;
if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0)
{
perror("peut pas connecter au serveur");
return 1;
}
puts("vous etnSes Connecté\n");
while(1)
{
printf("Enter votre nbres : ");
scanf("%d " ,&a );
if (( send(sock , (char * )& a , sizeof(&a) , 0) < 0) )
{
puts("l'envoie a ete echoué");
return 1;
}
if( recv(sock , (char *)& a , 2000 , 0) < 0)
{
puts("recv echoué");
break;
}
}
close(sock);
return 0;
}
#include<stdio.h>
#include<string.h>
#include<sys socket.h="">
#include<arpa inet.h="">
#include<unistd.h>
int main(int argc , char *argv[])
{
int socket_desc , client_sock , c , read_size,read_size1;
struct sockaddr_in server , client;
char client_message[2000];
int a;
char t ;
socket_desc = socket(AF_INET , SOCK_STREAM , 0);
if (socket_desc == -1)
{
printf("on peut pas creer la socket");
}
puts("Socket bien creer");
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 8880);
if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
{
perror("bind. Error");
return 1;
}
puts("bind attaché");
listen(socket_desc ,3);
puts("attedez une connection...");
c = sizeof(struct sockaddr_in);
client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c);
if (client_sock < 0)
{
perror("accept failed");
return 1;
}
puts("Connection accepté");
if ( (read_size = recv(client_sock , (char *)&a , 2000 , 0)) > 0 )
{
write(client_sock , &a , sizeof(&a));
}
if(read_size == 0)
{
puts("Client disconnected");
fflush(stdout);
}
else if(read_size == -1)
{
perror("recv failed");
}
return 0;
}
<pre lang="c">
|
|
|
|
|
Your code already sends and receives an integer; what is the problem?
|
|
|
|
|
thank you Richard McCutchan, the problem is that I wanted to display the number at the server level.
|
|
|
|
|
|
There are some errors in your. The first is the buffer size when sending an integer;
if (( send(sock , (char * )& a , sizeof(&a) , 0) < 0) )
The passed buffer size is wrong. It should be:
if (( send(sock , (char * )& a , sizeof(a) , 0) < 0) )
When reading replies, you probably want to read them into another buffer (as indicated by the size). So change
if( recv(sock , (char *)& a , 2000 , 0) < 0)
to
if( recv(sock , server_reply , sizeof(server_reply) , 0) < 0)
Similar for the server where you should first read an integer and then send the reply. So change this
if ( (read_size = recv(client_sock , (char *)&a , 2000 , 0)) > 0 )
to
if ( (read_size = recv(client_sock , (char *)&a , sizeof(a) , 0)) > 0 )
and send the reply afterwards.
|
|
|
|
|
merci beaucoup Jochen Arndt
|
|
|
|
|
Hi,
im having trouble understanding this line of C code (XC32, pic32):
uint16_t Cur = 65535;
uint16_t Next = 14000;
uint32_t ResVal = 0;
ResVal = ((uint32_t)Cur + (uint32_t)Next);
I believe the C standard requires that some sort of integral promotion takes place here but the result is not 79535. Instead i get an overflown uint16_t result.
How can i add two uint16_t variables and get the correct uint32_t result?
|
|
|
|
|
That should work even without casting. For your example an optimising compiler would just assign 79535 to ResVal .
The XC32 compiler is gcc based. So I don't think that there is a compiler problem.
|
|
|
|
|
In addition to what Jochen said, sometimes looking at the disassembly is helpful.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
I tried your code with the simulator (I don't have a an actual PIC32 MCU) and I see (with a watch) the correct result.
|
|
|
|
|
First of all: Casting happens implicitly so you don't need to cast in this scenario.
Secondly: These types that you are specifying in non-standard types, so uint32_t could be defined as anything which will give you an incorrect result.
Thirdly: How to you check what the result is? Though debugging or though a print statement? The print statement could be wrong.
Fouth: Know your platform you writing the code for (its limitations and the standard it is using). Not necessarily that the pic32 uses the specific c standard which you are looking at.
"Program testing can be used to show the presence of bugs, but never to show their absence."
<< please vote!! >></div>
|
|
|
|
|
It is possible to change the text of an menu item who has another branch menu ? I have tried classical solution:
pCmdUI->SetText(_T("&aaaa"));
but is working only on simple menu item ... if from this menu item go another menu items branch, the text have not change it ...
|
|
|
|
|
It should work, but if you have a resource based menu it's possible the system is refreshing it from your resource details.
|
|
|
|
|
I put a TRACE macro inside of ON_UPDATE_COMMAND_UI handler, but strange, it doesn't call at all ... that is why the text is not changing ... this message (ON_UPDATE_COMMAND_UI) is not calling for menu items that has derived menu from itself ?
|
|
|
|
|
Did you add their control ids to the set that the ON_UPDATE_COMMAND_UI responds to?
|
|
|
|
|
Yes, I did:
ON_UPDATE_COMMAND_UI(ID_VIEW_RENDERER1PLAN, &CMyAppDoc::OnUpdateViewRenderer1plan)
The fact is when I change menu item functionality, from this state (when from this menu is derived another menu item) into simple menu item, the text changing is working ...
|
|
|
|
|
It is difficult to guess what may be happening in your code, but changing the text of a control should have no effect on the message passing and event handling for that control. I would try it myself but do not have MFC on my system.
There is also some useful information at https://msdn.microsoft.com/en-us/library/65dtx4a4.aspx[^].
|
|
|
|
|
have this code in secure shell
and I want to keep log of the users input
I fopen the file in the beginning
and fprinf on the data specific that needs to be written
then at end of file I fclose it
the problem is that its not writing the file
when I cat gamelog it just sends me to the next calling line
??????
|
|
|
|