Reading from multiple textfields and saving into .txt file

this might be one way to do it.

We gather the inputs in one String infos but separate them by #
When saving we use split and then save

It makes files like Bob.txt, containing

Bob
1220

For each person / name a new file is created.

Remark
Alternatively, we could make one big file names.txt, more like a csv file containing

Bob,120
Ann,2220
Paul,34

Chrisir

import controlP5.*;
ControlP5 cp5;

Textfield infosInput;

int state = 0;
int MAXSTATE = 3;

String infos="";
// String infosOutput[];

void setup() {

  size (500, 500);

  cp5 = new ControlP5(this);

  cp5.addTextarea("titulo")
    .setPosition(100, 100)
    .setSize(400, 40)
    .setFont(createFont("arial", 30))
    .setLineHeight(14)
    .setColor(color(128))
    .setColorBackground(color(185, 100))
    .setColorForeground(color(255, 100))
    .setText("enTro");

  cp5.addTextarea("clique")
    .setPosition(280, 295)
    .setSize(200, 25)
    .setFont(createFont("arial", 12))
    .setLineHeight(14)
    .setColor(color(135))
    .setColorBackground(color(198, 100))
    .setColorForeground(color(255, 100))
    .setText("clique para continuar...")
    ;

  infosInput = cp5.addTextfield("")
    .setPosition(120, 100)
    .setSize(390, 30)
    .setFont(createFont("arial", 30))
    .setColor(color(128))
    .setColorBackground(color(185, 100))
    .setColorForeground(color(255, 100))
    ;

  cp5.addTextarea("nome")
    .setPosition(20, 350)
    .setSize(320, 40)
    .setFont(createFont("arial", 30))
    .setLineHeight(14)
    .setColor(color(120))
    .setColorBackground(color(195, 100))
    .setColorForeground(color(249, 100))
    .setText("digite seu nome");
}

void draw() {

  background(0);

  text(state, 23, 23);
  infosInput.setFocus(true); 

  switch (state) {
  case 0:
    cp5.get(Textarea.class, "titulo").setVisible(true);
    cp5.get(Textarea.class, "clique").setVisible(false);
    cp5.get(Textarea.class, "nome").setVisible(false);
    cp5.get(Textfield.class, "").setVisible(false);
    break;

  case 1:
    cp5.get(Textarea.class, "titulo").setVisible(true);
    cp5.get(Textarea.class, "clique").setVisible(true);
    break;

  case 2:
    cp5.get(Textarea.class, "titulo").setVisible(false);
    cp5.get(Textarea.class, "clique").setVisible(false);
    cp5.get(Textfield.class, "").setVisible(true);
    cp5.get(Textfield.class, "").setPosition(120, 100);
    cp5.get(Textarea.class, "nome").setVisible(true);
    cp5.get(Textarea.class, "nome").setText("digite seu nome");
    cp5.get(Textarea.class, "nome").setPosition(20, 350);
    break;

  case 3:
    cp5.get(Textfield.class, "").setPosition(180, 80);
    cp5.get(Textarea.class, "nome").setText("digite sua idade");
    cp5.get(Textarea.class, "nome").setPosition(30, 280);
    break;
  }
}

void keyPressed() {

  if ( key == RETURN || key == ENTER)
  {
    if (state > 1)
    {
      // even in state 3 we execute the following lines and save afterwards (so please no else if)
      infos = infos + "#" + infosInput.getText();
      infosInput.setText("");
      println("boink: "+infos);
    }  
    if (state == 3)
    {
      // saving 
      infos=infos.trim(); 
      if (infos.charAt(0) == '#') 
        infos=infos.substring(1); // delete leading # 
      // println("new:"+infos); 
      String[] infosOutput1 = split(infos, '#');  
      // reference says: saveStrings(filename, data)
      saveStrings(infosOutput1[0] + ".txt", infosOutput1);
      // println(infos);
    } 
    if (state==0) {
      // reset
      infos="";
    }

    state = (state+1) % (MAXSTATE+1);

    // println(state);
  }
}//func 
//
2 Likes