Ciao, ho quasi lo stesso problema di edomatch, ma con qualche variante. Praticamente:
ho un Interprete scritto in Pascal che gira su shell dos (si comporta come fosse a sua volta una shell, chiede un espressione in input e restituisce un output o errore) e devo costruirci un'interfaccia grafica. Volevo utilizzare Java perché con Netbeans mi trovo molto bene e posso costruire l'interfaccia in un attimo. Ora il problema è che utilizzando la funzione Runtime.getRuntime().exec() ottengo un errore su ntvdm.exe (NT Virtual Dos Machine) (errore impostando l'ambiente per l'applicazione) questo nonostante il fatto che se avvio il programma da un normale Prompt dei Comandi l'Interprete funzioni correttamente.
Così ho pensato di lanciare prima la Shell Dos e successivamente fargli richiamare l'interprete, ma sembra non funzionare: quando mando comandi li riceve la shell e non il mio interprete, come posso fare?
Posto un semplice codice di esempio:
codice:
import java.io.*;
import java.util.logging.*;
public class Main
{
public static void main (String[] args) {
try {
String[] cmd = new String[4];
cmd[0] = "cmd.exe";
cmd[1] = "/K";
cmd[2] = "start";
cmd[3] = "G:\\Pascal\\GalileoWin\\Build\\Galileo.exe";
Process p = Runtime.getRuntime().exec(cmd);
PrintWriter pw = new PrintWriter(
new OutputStreamWriter(p.getOutputStream()));
pw.println("3+3;"); // erroneamente eseguito dalla shell e non dall'interprete
pw.close();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String linea = br.readLine();
while (linea != null) {
System.out.println(linea);
linea = br.readLine();
}
br.close();
p.destroy();
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
se qualcuno riesce ad aiutarmi o almeno a dirmi qualcosa....grazie.