|
You can just click on one of the other numbers in the message to change it, but really it is not that important. Getting you to understand how the forum works is more so.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Hello,
I want to write a formula in excel through java but when I do the following a formula is displayed in the cell without displaying the results.The error with the formula is also seen.'A value used in the formula is of wrong data type'
but the above error disappears if I reenter the same formula for the same data.I am using the following code to do with jxl libraries.
StringBuffer buf = new StringBuffer();
buf.append("MDETERM(A1:D4)");
Formula f = new Formula(0, 11, buf.toString());
Pritha
|
|
|
|
|
Me thinks the formula is wrong, try:
buf.append("=MDETERM(A1:D4)");
Panic, Chaos, Destruction. My work here is done.
Drink. Get drunk. Fall over - P O'H
OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre
I cannot live by bread alone. Bacon and ketchup are needed as well. - Trollslayer
Have a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett
|
|
|
|
|
thanks for ur reply
I tried that but it doesnt work and surprisingly
buf.append("SUM(A1:a4)");
works fine then why
buf.append("MDETERM(A1:D4)"); should have a problem
|
|
|
|
|
can i have a javascript code to convert eglish text to hindi text in offline mode
|
|
|
|
|
Most unlikely; but you could investigate how to use Google translate[^].
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
we want to create File transfer Instant messenger in java what are the core areas in java we should know to build it?
|
|
|
|
|
|
|
hello
I have a form with jsf2 and primefaces that contains a submit button that managed two things: First: form validation with the update attribute and second launching a confirmation dialog box when validation succeeded and all of this are managed by:
update="myfieldset display"
so my problem is that when I click into the button validation: if validation don't succeeded : validation messages are displayed in the form : ok but if the validation succeeded I must click a second time to display dialog box
anyone know how to solve this problem there?
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<script type="text/javascript">
<!--
function effacer(formulaire){
for (var i=0; i<formulaire.length; i++){
if (formulaire.elements[i].type=="input" || formulaire.elements[i].type=="textarea" ) {formulaire.elements[i].value="";}
}
document.getElementById('contenu_input').value="";
}
</script>
<body>
<ui:composition template="./template_utilisateur.xhtml">
<ui:define name="content">
<h:form id="form" prependId="false" >
<p:fieldset id="myfieldset" legend="Nouveau message">
<p:messages id="msgs"/>
<h:panelGrid columns="3" style="margin-bottom:10px">
<h:outputLabel for="title" value="Titre : *"/>
<p:inputText id="title" style="width:340px;" value="#{messageController.titre}" required="true" requiredMessage="veuillez saisir un titre" label="Titre">
<f:validateLength minimum="10" />
</p:inputText>
<p:message for="title" display="icon"/>
<h:outputLabel for="city" value="Destinataire : *" />
<p:selectOneMenu id="city" value="#{messageController.destinataire}" label="Destinataire" required="true" requiredMessage="veuillez choisir au moins un destinataire" >
<f:selectItem itemLabel="Séléctionner déstinataire" itemValue="" />
<f:selectItems value="#{messageController.users}" />
</p:selectOneMenu>
<p:message for="city" id="msgSurname3" display="icon"/>
<h:outputLabel for="comm" value="Lié a La commande N° : " />
<p:selectOneMenu id="comm" label="Commande" value="#{messageController.idComm}" >
<f:selectItem itemLabel="Aucune commande" itemValue="" />
<f:selectItems value="#{messageController.id_c}" />
</p:selectOneMenu>
<p:message for="comm" id="msgSurnamse3" display="icon"/>
</h:panelGrid>
<h:outputLabel for="contenu" value="Contenu : *" />
<h:panelGrid columns="2">
<p:editor id="contenu" widgetVar="editer" value="#{messageController.message}" width="600" required="true" requiredMessage="Veuillez saisir le contenu du message" >
<f:validateLength minimum="10" />
</p:editor>
<p:message for="contenu" id="editorm" display="icon"/>
</h:panelGrid>
<h:panelGrid columns="3">
<p:commandButton id="submitButton" value="envoyer" update="myfieldset display" onclick="#{messageController.retournerDialog()}" icon="ui-icon-disk" />
<p:commandButton id="clearButton" type="reset" value="initialiser" onclick="editer.clear()"
icon="ui-icon-close" />
</h:panelGrid>
</p:fieldset>
<p:dialog header="Confirmation" widgetVar="dlg" showEffect="fade" hideEffect="fade" modal="true">
<h:panelGrid id="display" columns="1" cellpadding="4">
<h:outputText value="Titre : " />
<h:outputText value="#{messageController.titre}" id="model"/>
<h:outputText value="Déstinataire :" />
<h:outputText value="#{messageController.destinataire}" id="year"/>
<h:outputText value="Lié à la commande N° : " />
<h:outputText value="#{messageController.idComm}" id="manufacturer"/>
<h:outputText value="Contenu :" />
<h:outputText id="displxcay" value="#{messageController.message}" escape="false" />
</h:panelGrid>
</p:dialog>
</h:form>
</ui:define>
</ui:composition>
</body>
</html>
and here the method to launch the dialog :
public String retournerDialog(){
String retour = "";
if( getDestinataire() != "" && getMessage()!= "" && getTitre()!="" && getMessage().length()>9 && getTitre().length()>9){
retour="dlg.show()";
}
return retour;
}
thank you in advance
modified 7-Aug-12 9:31am.
|
|
|
|
|
I previously posted this on another forum which didn't seem to have a response, probably due to a low amount of users.
www.gamedev.net/topic/629181-java-chat-server-unknown-issue-beginner/
I've identified the problem as the loop getting stuck on the second run at the serversocket.accept() where the loop waits for a new client before dealing with other clients. I can't use serversocket.setTimeout() because then it will throw a exception which completely stops the server and if I place it in it's own try statement then the .accept will fallout of the scope and be pointless.
|
|
|
|
|
A networked chat program can be implemented several ways. I always distinguish between blocking and nonblocking socket implementations. blocking sockets (that you are using) are much easier to program but they are not suitable for some tasks. Actually a chat program is a task that suits the nonblocking sockets unfortunately because the socket of a client can send or receive data at an arbitrary time so you can not just block on the send() or recv() method of the socket because a send() might block forever while you miss an incoming data that should be received (and vice versa).
If you want to solve your chat program with blocking sockets then do this: accept() is also a blocking function, it won't return until a user connects. When a user connects you should create a dedicated handler thread for that user to serve its socket so the task of the main thread is just listening for new users and accepting them. Unfortunately on the user thread you should receive and send data at the same time so you are hit. To workaround this problem you can keep an active data flow between the client and the server like this: Every second you send out a packet to the client with the incoming messages of the other users (you send this message even if there are no incoming messages - you send an empty list in this case). After this you wait for the response of the client.
On the client side you wait for the request of the server (you receive this every second) so you get the messages of other users and then you send back your message as a response to the server. You have to send an idle command if you have no message to send currently because you dont want the server side thread of this user to block on the recv() of the user socket.
As I mentioned earlier a nice solution to a chat program is using nonblocking sockets (never did it in java so dont know if its possible and I cant help in it), but we could put together a blocking socket implementation that has the drawback of actively sending data around all the time in a specified interval (lets say half or 1 sec) that also brings in sometimes some extra delay that shouldnt be that annyoing in case of a chat program.
|
|
|
|
|
So a method of non-blocking would be, upon return of the .accept(), we create a thread with the socket of the new user. Another thread could be used to send the received message to all the users, which i would think makes sending the received messages to one thread to be sent, let's say though a stack, instead to all threads where we wouldn't know when to peek and/or pop so messages are sent to all without missing users. To summaries, one thread per user to receive messages and one thread for all users to distribute them.
|
|
|
|
|
I detailed a solution/workaround with blocking sockets. Nonblocking sockets is a bit more complicated so search for a good tutorial if you want to learn it. In my workaround solution there is one thread per user, and 1 thread to accept new users. As I described in the solution the user thread sends the incoming messages to the user and then receives the message of the user. It does send some kind of data periodically (every half/one sec) even if there are no incoming messages or message sent by the user. The thread should have an array for incoming messages into which other user threads can put incoming messages. lets say a user thread receives a message from the user - in this case the user thread iterates over the other users and puts this message to their incoming message queue. The other user threads will send this message out to other clients when their thread gets into the state of "sending out incoming messages". You have to use locks on data structures that are used by multiple threads, for example on the list of users. This list is used by both the accept threads and the user threads. You also need to use a lock on the incoming message queue of user threads because it is accessed by both the user thread and other user threads who put messages to it.
|
|
|
|
|
If you're using blocking socket calls then you need a thread per client, and a thread for the server (if the server is a console application which does nothing else then that can be the main thread). accept and recv both block indefinitely so they need to be in separate threads. (send also blocks, but only for a short time so you don't need to worry about that in my experience.)
You can use java.nio.* for asynchronous sockets. I've never used it but there are some examples here[^] and searching will turn things up.
|
|
|
|
|
Thinking it over again, a single threaded non-blocking solution might be easier to implement than a multithreaded blocking if someone has no experience with threading. I had a multithreaded async reactor pattern in my mind that put the async solution to a more difficult level than the blocking one...
EDIT: I think the OP should try to write both solutions to get the feeling of it if he is interested!
|
|
|
|
|
What is a non blocking solution, how would it work?
|
|
|
|
|
|
OKAY so here comes the update, I've added it into threads but now a unknown error occurs. Thanks to a debugger I know where and when it occurs but I don't know why. I get a exceptionNullPointer at line 11 of Users.java
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
import java.net.*;
import java.io.*;
public class Room implements Runnable{
public void run(){
ServerSocket serversocket;
Socket socket;
Clients client = new Clients();
try{
serversocket = new ServerSocket(7776);
while(true){
socket = serversocket.accept();
System.out.println("Client connected" + socket);
client.newThread(socket);
}
}catch(IOException e){
System.out.println(e);
}
}
public static void main(String[] args){
(new Thread(new Room())).start();
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.net.Socket;
public class Clients implements Runnable{
Socket socket1;
public void run(){
Socket socket2 = socket1;
Users userfunction = new Users();
BufferedReader bf;
bf = userfunction.addStream(socket2);
while(true){
try{
String out = bf.readLine();
System.out.println(out);
if(out != null)
userfunction.sendMessageALL(out);
}catch(IOException e){
System.out.println(e);
}
try{
Thread.sleep(10);
} catch (InterruptedException e) {}
}
}
public void newThread(Socket socket){
socket1 = socket;
(new Thread(new Clients())).start();
}
}
import java.net.*;
import java.io.*;
import java.util.ArrayList;
public class Users {
ArrayList<BufferedReader> recieveAL = new ArrayList<BufferedReader>();
ArrayList<PrintWriter> sendAL = new ArrayList<PrintWriter>();
public BufferedReader addStream(Socket socket){
BufferedReader br;
PrintWriter pw;
try{
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream(), true);
recieveAL.add(br);
sendAL.add(pw);
return br;
}catch(IOException e){
e.printStackTrace();
}
return null;
}
public void sendMessageALL(String send){
if(send != null){
for(int x = 0; x < sendAL.size(); x++){
PrintWriter pw = sendAL.get(x);
pw.println(send);
pw.close();
}
}
}
public void sendMessage(String send,int x){
PrintWriter pw = sendAL.get(x);
pw.println(send);
pw.close();
}
}
|
|
|
|
|
probably because there is a null pointer there. why don't you debug your code?
|
|
|
|
|
A null pointer is when it returns a Null, right?
I don't see the problem because that part of the code is unchanged. so why return an error now
|
|
|
|
|
You have a serious bug in your newThread() method that causes the nullpointer exception.
|
|
|
|
|
Parsing the Socket into the thread was my screw up, so It was replaced with parameters of the thread.
|
|
|
|
|
OK, here are a few suggestions:
1. I see you are coming from C because you declare all your function local variables at the beginning of the functions (sorry, methods). Declare your variables where you use it, or at least most most-inner scope where you need it.
2. Room does not have to implement the Runnable interface and you dont have to create a new thread for the room in your main(), call the run() method directly and execute it with the main thread.
3. The biggest mistake that causes the nullpointer is in Client.newThread: you should pass in this instead of new Clients(). I would do the work of Client.newThread in the constructor of Client and would create Client only after accepting the socket.
|
|
|
|
|
I really don't understand, this is currently beyond me at the moment.
|
|
|
|