SortedSet String into a String[]

Hello, I would like convert a SortedSet< String > into a String[], is it possible?
I would like to do it because I want to do a binary search on it? is it a good way converting it or I can use another way as well?
thanks,

mickey0 wrote:
Hello, I would like convert a SortedSet< String > into a String[], is it possible?
I would like to do it because I want to do a binary search on it? is it a good way converting it or I can use another way as well?A SortedSet already does an implicit form of a binary search for you when it has to find an entry in the set.
kind regards,
Jos

Similar Messages

  • Shorting My String Words in Alpabetic Order

    Hi,
    pls give me some hints.
    to print the words in my string in Alpabetic order..
    public static void main(String args[]) {
    String myString ="this is my text to be shorted in alpabetical order"; // assigning you String
              //Comparetor c = new Comparetor();
         SortedSet tset = new TreeSet( );
                        tset.add(myString);
                        Iterator it =tset.iterator();
                        while(it.hasNext()){
                             String outString =it.next().toString();
                             outString.split("");
                             System.out.println(outString);          
    Thanks

    import java.util.*;
    public class Srini_test {
          * @param args
         public static void main(String args[])
              String arr ="gat edoC siht htiw od ot gnihton sah gnimmargorp avaJ sA, tamrof txt nialp ni nettirw s'ti fi neve  edoc crs  dnatsrednu ot uoy tcepxe I , remmargorp  avaj a gnieB .sgat edoc esu ot woh em gniwohs rof sknahT ekruB.lyrraD raeD";
              for(int j= arr.length()-1;j>=0;j--)
                   System.out.print( arr.charAt(j));
              System.out.println(" ");
              String myString ="this is my text to be shorted in alpabetical order"; // assigning you String
              String []word =myString.split(" ");
              SortedSet<String> tset = new TreeSet<String>( );
                   for (int i=0;i<word.length;i++)
                        tset.add(word);
              Iterator it =tset.iterator();
                   while(it.hasNext())
                        String outString =(String)it.next();
                        System.out.print(outString +" ");
    Hope it will go in your Head now                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Input into 2d array table

    code is not right :( will repost.
    Edited by: jettaz on May 24, 2008 3:43 PM
    I have initialized a 14x4 array and filled it myself, while allowing the user to further input 4 more rows if he so wishes.
    The array table is 2d for an inventory, sorted by type and brand.
    try
    plainWrapString = JOptionPane.showInputDialog("Please enter Plain Wrap type:");
    brandAString = JOptionPane.showInputDialog("Enter serial for brand A:");
    brandCString = JOptionPane.showInputDialog("Enter serial for brand C:");
    brandXString = JOptionPane.showInputDialog("Enter serial for brand X:");
    for(rowsInteger = 0; rowsInteger < 14; rowsInteger++)
    if(plainWrapString.equalsIgnoreCase(inventoryArray[rowsInteger][columnInteger]))
    throw new IllegalArgumentException("Duplicate found! Please retry.");
    inventoryArray[rowsInteger][columnInteger] = plainWrapString;First of all, my try... catch statement, doesn't catch even when plainWrapString input is a copy of the already entered data in the array table. I had it working okay, though, before I attempt to get the user tp further input more data corresponding to the plainWrapString's row. I'm not sure if this works for inputting the following data according to brands.
    for (columnInteger = 0; columnInteger < 4; columnInteger ++)
    inventoryArray[rowsInteger][columnInteger] = brandAString;
    columnInteger = 0; // resets columnInteger back to zero to continue filling next
                                // column in array?
    for (columnInteger = 0; columnInteger < 4; columnInteger++)
    inventoryArray[rowsInteger][columnInteger] = brandXString;
    columnInteger = 0;
    for (columnInteger = 0; columnInteger < 4; columnInteger++)
    inventoryArray[rowsInteger][columnInteger] = brandCString;
    selectionDropMenu[rowsInteger] = plainWrapString; // something extra to add to a
                                                                               // drop menu
    catch(IllegalArgumentException error)
    JOptionPane.showMessageDialog(null, error.getMessage());
    }Any help is appreciated :)
    Edited by: jettaz on May 24, 2008 3:46 PM
    Edited by: jettaz on May 24, 2008 4:20 PM

    A HashMap would be a better way to ensure that you have unique elements. This approach will allow you to get away from using exception. I have attached two classes. I have assumed that you only want to store one type, but each type can have many brands. The types will be unique but the brands can be duplicates. The brand object counts the number of duplicate entries. An additional benefit of this approach is that you do not need to know the size of your collection before hand.
    The test class contains the main() method.
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Set;
    import java.util.SortedSet;
    import java.util.TreeSet;
    public class TestClass{
         private HashMap<String, Brand> type = new HashMap<String, Brand>();
         public TestClass(){
         public void addTypeAndBrand(String typeName, String brandName){
              Brand b = type.get(typeName);
              if(b==null){
                   type.put(typeName, new Brand(brandName));
              }else{
                   b.addBrand(brandName);
         public void listTypeAndBrand(){
              Set<String> types = type.keySet();
              SortedSet<String> sortedTypes = new TreeSet<String>(types);
              Iterator<String> typeIter = sortedTypes.iterator();
              Brand b = null;
              String typeName = "", brandName = "";
              int frequency=0;
              while(typeIter.hasNext()){
                   typeName = typeIter.next();
                   b = type.get(typeName);
                   Set<String> brands = b.getKeys();
                   SortedSet<String> sortedBrands = new TreeSet<String>(brands);
                   Iterator<String> brandIter = sortedBrands.iterator();
                   while(brandIter.hasNext()){
                        brandName = brandIter.next();
                        frequency = b.getCount(brandName);
                        System.out.println("Type: " + typeName + ",     Brand: " + brandName + ",     Brand Count: " + frequency);
         public static void main(String[] arg){
              TestClass test = new TestClass();
              test.addTypeAndBrand("Japan", "Toyota");
              test.addTypeAndBrand("Japan", "Honda");
              test.addTypeAndBrand("Japan", "Honda");
              test.addTypeAndBrand("USA", "Ford");
              test.addTypeAndBrand("USA", "Chevy");
              test.addTypeAndBrand("USA", "Dodge");
              test.listTypeAndBrand();
    }The Brand class is:
    import java.util.HashMap;
    import java.util.Set;
    public class Brand {
         private HashMap<String, Frequency> brand = new HashMap<String, Frequency>();
         public Brand(String brandName){
              brand.put(brandName, new Frequency());
          * Add brand to HashMap. If brand does not already exist, add brand to HashMap.
          * Otherwise increment count of brand.
          * @param newBrand brand to be added to HashMap
         public void addBrand(String newBrand){
              Frequency freq = brand.get(newBrand);
              if(freq==null){
                   brand.put(newBrand, new Frequency());
              }else{
                   freq.add();
         public Set<String> getKeys(){
              return brand.keySet();
         public int getCount(String key){
              Frequency f = brand.get(key);
              return f.getFrequency();
          * Inner class for frequency counts.
         class Frequency{
              private int total;
              public Frequency(){
                   total = 1;
              public void add(){
                   total++;
              public int getFrequency(){
                   return total;
    }The output I get is:
    Type: Japan, Brand: Honda, Brand Count: 2
    Type: Japan, Brand: Toyota, Brand Count: 1
    Type: USA, Brand: Chevy, Brand Count: 1
    Type: USA, Brand: Dodge, Brand Count: 1
    Type: USA, Brand: Ford, Brand Count: 1

  • Sort a  Generic List.

    I was wondering how to sort a list of generics. I am an Experienced C++ programmer and know that I can do this with STL quite easily but cannot see an equivelant in Java.
    I was expecting to have something like the following code
    //perhaps an equivelant of a functional object added here in the constructor
    List<String> listStrings = new Vector<String>();
    listStrings.add("Hello");
    listStrings.add("Cruel");
    listStrings.add("World");
    sort(listStrings);
    for(String strString : listStrings)
          System.out.println(strString);I know that I can achieve a similar result by casting the List to an array and then doing a sort and then using addAll() to make it back into a list or I could just use a SortedList of some kind. e.g.
    SortedSet<String> setStrings = new TreeSet<String>();I was just windering if there was another method that would be cleaner than this. (A Sorted List of some kind would be very clean unless you wanted to sort the array at a later stage after using it in its unsorted form first, also what if you want duplicates?)

    K, I found it in java.utils.Collections
    Collections.sort(listStrings);and there is another sort overload which allows you to specify a Comparator.
    Perfect.

  • Regarding collection objects

    I happened to view this program in the net.
    import java.util.*;
    public class FindDups {
    public static void main(String[] args) {
    Comparator<String> comparator = new Comparator<String>() {
    public int compare (String s1, String s2) {
    return s1.compareToIgnoreCase(s2);
    SortedSet<String> s = new TreeSet<String>(comparator);
    for (String a : args)
    if (!s.add(a))
    System.out.println("Duplicate detected: " + a);
    System.out.println(s.size() + " distinct words: " + s);
    When i compile and run ,its working properly.Am not able to get a hang of this piece of code.
    My doubt is why there is a semi colon after the braces ?
    why have they given <string> in between?

    The <String> part is explained in Generics (http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf)
    The semicolon after the closing brace is necesary beacuse it's an anonymous inner class (http://java.sun.com/docs/books/tutorial/java/javaOO/innerclasses.html)
    Comparator<T> is an interface. The code is creating an implementation of the interface.

  • How can I put all output error message into a String Variable ??

    Dear Sir:
    I have following code, When I run it and I press overflow radio button, It outputs following message:
    Caught RuntimeException: java.lang.NullPointerException
    java.lang.NullPointerException
         at ExceptionHandling.ExceptTest.actionPerformed(ExceptTest.java:72)
         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
         at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
         at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
         at java.awt.Component.processMouseEvent(Component.java:6038)
         at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
         at java.awt.Component.processEvent(Component.java:5803)
         at java.awt.Container.processEvent(Container.java:2058)
         at java.awt.Component.dispatchEventImpl(Component.java:4410)
         at java.awt.Container.dispatchEventImpl(Container.java:2116)
         at java.awt.Component.dispatchEvent(Component.java:4240)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
         at java.awt.Container.dispatchEventImpl(Container.java:2102)
         at java.awt.Window.dispatchEventImpl(Window.java:2429)
         at java.awt.Component.dispatchEvent(Component.java:4240)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)Caught RuntimeException: java.lang.NullPointerException
         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)I hope to catch all these error message into a String Variable such as StrErrorMsg, then I can use System.out.println(StrErrorMsg) to print it out or store somewhere, not only display at runtime,
    How can I do this??
    Thanks a lot,
    See code below.
    import java.awt.Frame;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.FileInputStream;
    import javax.swing.ButtonGroup;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    public class ExceptTest extends JFrame implements ActionListener {
        private double[] a;
      private JRadioButton divideByZeroButton;
      private JRadioButton badCastButton;
      private JRadioButton arrayBoundsButton;
      private JRadioButton nullPointerButton;
      private JRadioButton negSqrtButton;
      private JRadioButton overflowButton;
      private JRadioButton noSuchFileButton;
      private JRadioButton throwUnknownButton;
      public ExceptTest() {
        JPanel p = new JPanel();
        ButtonGroup g = new ButtonGroup();
        p.setLayout(new GridLayout(8, 1));
        divideByZeroButton = addRadioButton("Divide by zero", g, p);
        badCastButton = addRadioButton("Bad cast", g, p);
        arrayBoundsButton = addRadioButton("Array bounds", g, p);
        nullPointerButton = addRadioButton("Null pointer", g, p);
        negSqrtButton = addRadioButton("sqrt(-1)", g, p);
        overflowButton = addRadioButton("Overflow", g, p);
        noSuchFileButton = addRadioButton("No such file", g, p);
        throwUnknownButton = addRadioButton("Throw unknown", g, p);
        getContentPane().add(p);
      private JRadioButton addRadioButton(String s, ButtonGroup g, JPanel p) {
        JRadioButton button = new JRadioButton(s, false);
        button.addActionListener(this);
        g.add(button);
        p.add(button);
        return button;
      public void actionPerformed(ActionEvent evt) {
        try {
          Object source = evt.getSource();
          if (source == divideByZeroButton) {
            a[1] = a[1] / a[1] - a[1];
          } else if (source == badCastButton) {
            Frame f = (Frame) evt.getSource();
          } else if (source == arrayBoundsButton) {
            a[1] = a[10];
          } else if (source == nullPointerButton) {
            Frame f = null;
            f.setSize(200, 200);
          } else if (source == negSqrtButton) {
            a[1] = Math.sqrt(-1);
          } else if (source == overflowButton) {
            a[1] = 1000 * 1000 * 1000 * 1000;
            int n = (int) a[1];
          } else if (source == noSuchFileButton) {
            FileInputStream is = new FileInputStream("Java Source and Support");
          } else if (source == throwUnknownButton) {
            throw new UnknownError();
        } catch (RuntimeException e) {
          System.out.println("Caught RuntimeException: " + e);
          e.printStackTrace();
          System.out.println("Caught RuntimeException: " + e);
        } catch (Exception e) {
          System.out.println("Caught Exception: " + e);
      public static void main(String[] args) {
        JFrame frame = new ExceptTest();
        frame.setSize(150, 200);
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
        frame.show();
    }

    yes, I update as follows,
    but not looks good.
    import java.io.*;
    public class UncaughtLogger implements Thread.UncaughtExceptionHandler {
        private File file;
        private static String errorMessage;
        public UncaughtLogger(File file) {
            this.file = file;
            //Thread.setDefaultUncaughtExceptionHandler(this);
        public UncaughtLogger(String str) {
            this.errorMessage = str;
            Thread.setDefaultUncaughtExceptionHandler(this);
        //@Override()
        public void uncaughtException(Thread t, Throwable e){
            try {
                log(e);
            } catch (Throwable throwable) {
                System.err.println("error in logging:");
                throwable.printStackTrace();
        private void log(Throwable e) throws IOException {
            PrintWriter out = new PrintWriter(new FileWriter(file, true));
            try {
                e.printStackTrace(out);
            } finally {
                out.close();
        private static UncaughtLogger logger = new UncaughtLogger(new File("C:/temp/log.txt"));
        private static UncaughtLogger logger2 = new UncaughtLogger(errorMessage);
        public static void main(String[] args) {
                String s1 = "Hello World!";
                s1 = null;
                String s2 = s1.getClass().getName();
                System.out.println(s1);
                System.out.println(s2);
                System.out.println("errorMessage =" + errorMessage);
    }

  • How to catch exception into a String variable ?

    I have a code
    catch(Exception e)
                e.printStackTrace();
                logger.error("\n Exception in method Process"+e.getMessage());
            }when i open log i find
    Exception in method Process null.
    But i get a long error message in the server console !! I think thats coming from e.printStackTrace().
    can i get the error message from e.printStackTrace() into a String variable ?
    I want the first line of that big stacktrace in a String variable.
    How ?

    A trick is to issue e.printStackTrace() against a memory-based output object.
    void      printStackTrace(PrintStream s)
             // Prints this throwable and its backtrace to the specified print stream.
    void      printStackTrace(PrintWriter s)
    //          Prints this throwable and its backtrace to the specified print writer.Edited by: BIJ001 on Oct 5, 2007 8:54 AM

  • Loop at  field-symbol  (any table) into string ?

    Hi Everyone,
    I need little help, I have a requirement to extract table content with columns names as the header.
    After doing some search I figured out the best way to this since table name will be only avaialbe at runtime through
    a selection field . my problem is to loop through field-symbol and convert a structure to string value so that I can
    write to the file.
    REPORT  zlab_tbl_export.
    DATA table_name(30) VALUE 'ZSMARTTS_HTML'.
    DATA v_file(100) VALUE 'c:\sap_export.txt'.
    DATA line(1000).
    DATA: o_data TYPE REF TO data.
    CREATE DATA o_data TYPE TABLE OF (table_name).
    FIELD-SYMBOLS: <table> TYPE ANY TABLE.
    ASSIGN o_data->* TO <table>.
    SELECT * UP TO 100 ROWS FROM (table_name) INTO TABLE <table>.
    OPEN DATASET v_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    >>>>>>> LOOP at <table> into line.   >>>>>>>>>>>>  " Here the code breaks and fail
      TRANSFER line to v_file. 
      WRITE :/ line.          
    ENDLOOP.
    CLOSE DATASET v_file.
    Exception Message
    |Error analysis                                                                                |
    |    You attempted to move one data object to another.                                             |
    |    This is not possible here because the conversion of a data object                             |
    |    of type "v" to type "C" is not supported.                                                     |
    |                                                                                |
    |      List of internal ABAP types:                                                                |
    |                                                                                |
    |      C    Text (Character)                                                                       |
    |      N    Numerical text                                                                         |
    |      D    Date (YYYYMMDD)                                                                        |
    |      T    Time (HHMMSS)                                                                          |
    |      X    Hexadecimal                                                                            |
    |      I    Integer                                                                                |
    |      P    Packed number                                                                          |
    |      F    Floating point number                                                                  |
    |                                                                                |
    |      h    Internal table                                                                         |
    |      r    Object reference                                                                       |
    |      l    Data reference                                                                         |
    |      g    String of type C                                                                       |
    |      y    String of type X                                                                       |
    |      s    2-byte integer with plus/minus sign                                                    |
    |      b    1-byte integer without plus/minus sign                                                 |
    |      u    Structure (flat structure)                                                             |
    |      v    Structure (deep structure)                                                             |

    Hi Everyone, I need little help, I have a requirement to extract table content with columns names as the header. After doing some search I figured out the best way to this since table name will be only avaialbe at runtime through a selection field . my problem is to loop through field-symbol and convert a structure to string value so that I can write to the file.
    thie is the code
    REPORT  zlab_tbl_export.
    DATA table_name(30) VALUE 'ZSMARTTS_HTML'.
    DATA v_file(100) VALUE 'c:\sap_export.txt'.
    DATA line(1000).
    DATA: o_data TYPE REF TO data.
    CREATE DATA o_data TYPE TABLE OF (table_name).
    FIELD-SYMBOLS: <table> TYPE ANY TABLE.
    ASSIGN o_data->* TO <table>.
    SELECT * UP TO 100 ROWS FROM (table_name) INTO TABLE <table>.
    OPEN DATASET v_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    LOOP at <table> into line.   " Fail here
      TRANSFER line to v_file. 
      WRITE :/ line.           
    ENDLOOP.
    CLOSE DATASET v_file.
    and this is the exception:
    Error analysis                                                                               
    You attempted to move one data object to another.                                            
        This is not possible here because the conversion of a data object                            
        of type v to type C is not supported.                                                    
    Edited by: Misbah on Jan 7, 2010 11:50 PM

  • Need to convert a long into a string, please

    hi there
    i need to convert a long into a string. can i just cast it like this:
    (String)longNumber = some function that returns a long;

    Why not just use Long.toString()? If you start with a long value, you can create a Long object and get it's value as a String.

  • How can i store values from my String into Array

    Hi guys
    i wants to store all the values from my string into an array,,,, after converting them into intergers,,,, how i can do this becs i have a peice of code which just give me a value of a character at time,,,,charat(2)...BUT i want to the values from String to store in an Array
    here is my peice of code which i m using for 1 char at time
    int[] ExampleArray2 = new int[24];
    String tempci = "Battle of Midway";
    for(int i=0;i>=tempci.length();i++)
    int ascii = tempci.charAt(i); //Get ascii value for the first character.

    public class d1
         public static final void main( String args[] )
              int[] ExampleArray2 = new int[24];
              String tempci = "Battle of Midway";
              for(int i=0;i<tempci.length();i++)
                   int ascii = tempci.charAt(i);
                   ExampleArray2=ascii;
              for(int i=0;i<ExampleArray2.length;i++)
                   System.out.println(ExampleArray2[i]);

  • How to pass line text into string of 72 characters

    Hi,
    I need to to pass  material text lines to a file for processing into different SAP system.
    Currently i am having multiple text lines stored in an internal table. I am looping that table and checking the string length of a first line.If it is less than 72 characters then i need to add spaces at the end of the text and make it 72 and pass it to workarea-field.
    However, while passing the next line text it is overwriting the spaces of first line and that is making the text meaning difficult to understand when passed to the other SAP system.
    Let me know how to approach.
    Thanks,
    Ankur

    Hi,
    This will not work as it splits the text as per the position.
    However what i would need is if i am entering text like this.
    Material ABCD --> Line 1
    This is finished product 9-series material used for high-value equipments. ---> Line 2
    Currently,  when transferring this data over the file it goes to the other system as
    Material ABCDthis is finished product---> upto 72 characters
    9 series material used for high-value ---> upto 72 characters
    equipments.
    So if there is less than 72 characters in the first line it takes 2nd line text. However it is ok if the text has more than 72 characters as it goes into the next line and still makes the meaning intact.

  • Need help on breaking a large string into substringsto fit in a line

    hii,suppose i have i have large string (the content of which is not apparently visible to me)which i want to show in a text area ,,,now how can i break it into multiple lines to be able view the total string...
    i dont want to use horizantal scrollbar...
    here i submit a sample code..and pls show me the neccesary modifications...
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    class textarea extends JFrame
    textarea()
    super("Text area length test");
    setSize(640,480);
    Container contentpane=getContentPane();
    JTextArea area=new JTextArea("Split panes allow the user to dynamically change the size of two or more components displayed side-by-side (within a window or another panel). Special dividers can be dragged with the mouse to increase space for one component and decrease the display space for another. Note that the total display area does not change. This gives applications a more modern and sophisticated view. A familiar example is the combination of a tree and a table separated by a horizontal divider (e.g. file explorer-like applications). The Swing framework for split panes consists only of JSplitPane.");
    area.setLayout(new BorderLayout());
    contentpane.add(area);
    setVisible(true);
    class texttest
    public static void main(String args[])
    new textarea();
    In the original code the Stron to be printed is not visible to me...

    Configure the text area so that it uses word wrap (see the javadoc)
    Kaj

  • Can anyone answer this question? What is used to format a string so that it falls into a certain Row/Column in excel? see text for indepth question.

    I'm attaching a file that may help. Just remember this is my FIRST attempt at using NI/FeildPoint so things that would be obvious to the normal users more than likely would slide right by me. So I'll try and explain what the text contains as to make my problem more clear. I'm using a FP-1000, FP-AI-100, and a FP-TB-10. i'm creating a application where I'm using the 8 channels from the FP-AI-100 to monitor a control system ,that we manufacture. The control system is in an environmental chamber. I use the FP-TB-10 to monitor the temperature while in the chamber. The control system is ran for 4 hours under varing enviromental conditions while I monitor vital system voltages with the FP-AI-100. Now the application that i'm building starts with the obvious FP CREATE.VI and so forth I have no problem communicating with the FP's, but the information that I'm monitioring needs to be placed into a file with Headers describing the information below it. Now I use a "WHILE LOOP.VI" to monitor the FP-AI-100 & FP-TB-10 for the 4 hour period. but before that I create and open a file where I use a "CONCATENATE STRINGS.VI" to enter the headers I need. I do this by CONSTANTS, CONTROLS, TABs, AND CARRIAGE RETURN being entered into the "CONCATENATE STRINGS.VI" in the order I want them to appear. I use ROW 1 to enter (OPERATOR:with a CONSTANT) an a (CONTROL so the operator may enter his name and be recorded into the file) using a TAB to seperate Columns and a CARRIAGE RETURNto drop down to ROW 2 for the next headers. I use header names and TABs to seperate the columns. This part works great. I end up with ROW 1 having the operator information then ROW 2 having the headers for all the channels I'm using to monitor the control system with in their own column. The trouble happens when I write to this file during the "WHILE LOOP". The information recorded for DATE:, TIME:, and Channel 0 of the FP-AI-100 end up right under their corresponding header on ROW 3, but the rest of the data ends up on ROW 4 in column 3 and goes down many rows with some of the data not being stored at all. It varies on how many rows are used starting at ROW 4 but hey always stay in column 3. I use the "FP READ.VI" outputing to a "ARRAY TO SPREADSHEET STRING.VI" outputing to a "CONCATENATE STRINGS.VI" for each channel within the "WHILE LOOP" then into the "WRITE.VI". I use the "CONCATENATE STRINGS.VI" to place my data OR atleast I thought you could do that some how I'm not quit doing something write either there is a sampling/timing issue or writing to file issue where things are being confused in the "WHILE LOOP" if someone know a better route to perform what I'm tring here I would be interested. Its not like I'm not giving it the old colledge try here but without proper training and the vagness of the manuals it's difficult to understand what every connection actually does.I'm tring though for everyone who happens to fill pity for me
    Thanks for your help
    John Morris
    Glendinning Marine Product, Inc.
    Attachments:
    ALLchannels ‏273 KB

    > I appreciate your effort to help me, but there is still a slight cloud
    > in front of my eyes here.(I must mention that I'm using Labview 5.1
    Oh, to bad. I'm using LV 6,02 and tried to save the application as LV5.1,
    but it didn't work.
    > Lets start with the easy one which is the SECOND main thing you
    > wanted to mention. In my application I used individual Create Tag.vi's
    > "so your saying that I can use just one Create Tag.vi and one Read.vi
    > and what ever I use to display the values will automatically to show
    > the individual channels" in other words if I use a "Indicator(DBL)"
    > comming out of the Read.vi what ever I use in the "PANEL" layout will
    > expand to show all 8 channel if I was using a FP-AI-100? Cool...
    Allmost right. The 8 channels come out as 1D-array, ch0...ch7.
    > #1--How do I change the delimiter (TAB) to a delimiter (comma) in a
    > Array to Spreadsheet String.vi?
    > ...cut
    I don't use this Spreadsheet VI, because files coming out there allways
    start this time consuming EXCEL wizzard. Because of this, I programmed my
    own CSV-conversion vi. Maybe you could just use a common texteditor, like
    wordpad and put the csv-examples from my last reply down to a text file
    and rename it to *.csv. Texteditors terminate lines with "\r\n" by
    default, so this is a very quick way for testing.
    > FP_Analog_Logging example to record all eight channels it uses a Array
    I didn't find the vi you metione above, but there is another good one:
    Look at examples\FieldPoint\DataLogging\FP Logger.vi.
    In a little case structure, at "false", there is a function called "Format
    into string".
    Pop up on the format string and adjust >>'\' Codes Display<<.
    Then you change the format string into: %.;%-f%s
    A Tab string is connected to the lower input of this function. Replace
    this one with a comma.
    That should do.
    >
    > #2--If using just one Create Tag.vi and one Read.vi and I have the
    > Item Name listed as ALL I take it that the information comming out of
    > the Read.vi is data for each channel in a String format starting with
    > channel 0 and ending with channel 7 for the FP-AI-100.
    Yes, just as explained above. If you put a indicator at the output to
    display the values, you can expand the display to show all 8 channels, but
    you can't name induvidual cells. In a array, all cells have identical
    named labels. If you want to name the individually, you have to attach the
    array to cluster function and put the indicator after this one. Enable
    labe display and name the output values individually.
    > #3--Now I use the following to "Format String" in the Array to
    > Spreadsheet string.vi (%.4f)but I don't see anyway of changing the
    > delimiter from (TAB) to (COMA)
    Explained above.
    > #4 you stated text strings need a "as prefix and sufix" and each
    > string is seperated by a coma, a period is used as decimal number
    > separator and lines have to be terminated by my question is
    > WHERE IS THIS ACCOMPLISHED? WHAT VI OR WHAT CONNECTOR PIN?
    Well, modifying strings are done with string functions.
    Above, as I explained how the sample FP Logger.vi can be modified to do
    the job for numbers. The pre- and suffixing with ", you only need for
    strings, which EXCEL should interpret a string and as nothing else as a
    string, even if there's a number inside. You usually need this only for
    headers. So its easyest, if you just write your string into a string
    constant or control and concatenate it to the previous csv-file contents.
    Oh, I just see by looking at the above mentioned example... Inside the
    case structure, but in the "true" case, there are error messages
    concatenated to the logfile. At this point it is importent, to use " for
    integrating the message into the CSV file, because a error message usually
    looks like this: >> ERROR 2345 in vi yxz <<
    Here you have text and number strings mixed in one line. EXCEL does not
    know, if it should interpret the number inside the error line as separate
    number, separating the line into three colums i.e. string before number,
    number and string after number. So tell EXCEL by putting a " before and
    after the line each.
    For this, expand the Format To String function by one input, move down all
    connections, to be able to insert a string constant with a " to the first
    argument connector. Change the contents of the string constant at the
    bottom argument from tab to ", (quotation mark AND comma)
    > #5 You gave me an example of what a 3 column header could look like:
    > "col0","col1","col2"\r\n Now is this something that you enter
    > somewhere cause I know that \r is carriage return and \n is newline so
    > I take it that the above is entered somewhere maybe in the Write.vi to
    > the connector called Header (F)? See this is what confuses me because
    > NI manuals have no examples of certain connectors types being used or
    > any reference as to how they manipluate data with there varing type
    > inputs. Or maybe I'm just missing them.
    The example I mentioned above help here to.
    Look at the Write File function. This function receves data from a
    function named concatenate strings. Expand this function to have one more
    spare input at the bottom. Create a string constant. Switch the constant
    display to "\" mode. Enter "col0","col1","col2"\r\n into the constant.
    Connect the constant to the spare input.
    Doing this, every dataline in the csv file is followed by
    "col0","col1","col2"\r\n .
    I wish you a nice weekend,
    Rainer Ehrt

  • How can I send multiple string commands into a VISA write?

    Hi Fellow LabVIEW users
    I am very new to LabVIEW (2.5 months) so please forgive me if my lingo is not up to par.
    How can I send multiple string commands to a VISA write. For example each string command looks like this
    1) 3A00 0000 0000 FFFF FFFF FFFF 0000 0000 FF00 0000 0000 0000 0000 0033 (Scenario 1)
    2) 3A01 0000 0000 FFFF FFFF FFFF 0000 0000 FF00 0000 0000 0000 0000 0034 (Scenario 2)
    3) 3A01 0000 0000 33FF FFFF FFFF 0000 0000 FF00 0000 0000 0000 0000 0067 (Scenario 3).
    and so on and so forth. And there are a number of scenarios.
    Each String scenario will give a different string output which will be interpreted differently in the front panel.
    Right now I have to manually change the string commands on the front panel to give me the desired output. How can I do this without manually changing the commands i.e. hard coding each scenario into the block diagram?
    Thanks, any feedback will help.
    mhaque

    Please stick to your original post.

  • How can I get an unsigned char string with nulls from a dll into LabVIEW 6i?

    The following ethernet packet data is contained in an unsigned char * string returned from my dll (it's formatted on printing):
    Received A 230 Packet On Adapter 0x008F0070
    Ethernet Dest: 01.E0.BB.00.00.15 Src: 00.E0.BB.00.DD.CC Type: 0x8868
    000000: 01 E0 BB 00 00 15 00 E0 : BB 00 DD CC 88 68 48 41 .............hHA
    000010: 00 E0 BB 00 DD CC 80 B3 : 00 00 FF FF 00 02 00 01 ................
    000020: 01 00 F0 18 FF 7F 7F FF : FF 7F 7F FF FF 7F 7F FF ................etc., etc.
    However, when I read this string into LabVIEW 6i, I only get the following:
    01E0 BB
    Which is the data before the first NULL or 00 information. I found a "Remove Unprintable Chars.vi" but it
    just sees more data before the above string, nothing after, as seen here: 5C30 31E0 BB.
    Anybody have any suggestions for how to get the rest of the string? Is there something I can do to further reformat my dll? The dll I'm using is already a wrapper around another dll so I have some flexibility, but the bottom line is, the data I want is in the format of an unsigned char *.

    Excellent advice, this mostly works so I have some further questions:
    I am just reading network traffic off my ethernet card right now, but here is what I get using my C program to test:
    000000: 01 E0 BB 00 00 15 00 E0 : BB 00 DD CC 88 68 48 41 .............hHA
    000010: 00 E0 BB 00 DD CC 80 B3 : 00 00 FF FF 00 02 00 01 ................
    000020: 01 00 38 3C FF 7F 7F 7F : 7F 7F 7F FF FF 7F 7F FF ..8<............
    000030: FF 7F 7F FF FF 7F 7F FF : 7F 7F 7F FF FF FF FF FE ................
    000040: FE FF FF FF FF 7F 7F 7F : 7F 7E 7E 7F 7F 7E 7E FF .........~~..~~.
    000050: 7F 7F 7F 7F FF 7F 7F 7F : 7F 7F 7F FF FF 7F 7E 7F ..............~.
    000060: 7F 7F 7E 7F 7F 7E 7F FF : FF 7F FF FF FE FF FF FE ..~..~..........
    000070: FF FF FF FF FF 7F 7F FF : FF 7F 7F FF FF FF FF FF ................
    000080: FF 7F 7F FF FF 7F 7F FF : FF 7F 7F FF FF 7F 7F FF ................
    000090: FF 7F 7F 7F FF 7F 7F 7F : 7F 7F 7F FF FF 7F 7F FF ................
    0000A0: FF 7F 7F 7F 7F 7E 7E 7F : 7F 7F FF FF FF FF FF FF .....~~.........
    0000B0: FF FF 7F FF FF 7F 7F FF : 7F 7F 7F FF FF 7E 7F FF .............~..
    0000C0: FF FF 7F FF FF 7F 7F FF : 7F 7F 7F FF FF 7F 7F FF ................
    0000D0: FF 7F 7F FF FF 7F 7F 7F : 7F 7F 7F FF FF FF FF FE ................
    0000E0: FE FF FF FF 00 01 : ................
    And here is what I get using LabVIEW to call the dll:
    0015 00E0 BB00 DDCC 8868 4841 00E0 BB00 DDCC 80B3 0000 FFFF 0002 0001 0100 9600 7F7F 7F7E 7F7F 7F7F 7F7F 7F7F 7F7F 7F00 B405 4300 3300 0000 0000 0000 01E0 BB00 0015 00E0 BB00 DDCC 8868 4841 00E0 BB00 DDCC 80B3 0000 FFFF 0002 0001 0100 9600 7F7F 7F7E 7F7F 7F7F 7F7F 7F7F 7F7F 7F00 F405 1B04 0C04 0000 0000 0000 8000 0000 0000 0000 0800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
    The first thing I notice is that the first 4 bytes are chopped off, and after about 50 bytes, the data is corrupted until the sequence starts to repeat, but this time it starts with the missing 4 bytes and still corrupts after about 55 bytes.
    I am expecting the data in LabVIEW to look very similar to the C data because the network packets I am grabbing are pretty consistant, only a couple bytes will vary between them, not the number I am seeing in LabVIEW.
    Another side effect I'm seeing is that I can only run my labVIEW code once, if I try running it again it crashes with failures such as:
    memory could not be "read"
    For reference, I am opening and closing the network adapter inside the read function of my dll, but the pointer seems like it should be intact...
    Attachments:
    zListAdapters.vi ‏30 KB
    listAdapters.dll ‏201 KB
    Reading.dll ‏213 KB

Maybe you are looking for

  • MSI Neo4 Platinum with MSI GF6600GT PCI-e Freezes on games

    I'm having this serious problem that my new build system freezes on games. Sometimes I can play for a few hours and sometimes I can play only a few minutes before the system freezes completely. Only a hardware reset helps in this case. This is my har

  • Time Machine Backup Stuck on Preparing Backup for 12 hours

    Hello, I have a 2011 iMac and am running OS X 10.7.2.  Up until a few days ago, my Time Machine backups (to a USB 2.0 external hard drive) were running fine.  Now, when Time Machine tries to back up, all it does is display the progress bar with the w

  • Importing Database Package into OWB changes position of parameters .. Nasty

    Hi all, Anyone else having the same problem ? Any solutions ? Or is this a bug. When a package is imported from a DB schema, OWB kindly changes the order in which the parameters are listed. The effect is that any mapping using the procedure or functi

  • Long Sync times...... Solved!!!

    Over the past 2 months I have been moving my nearly 4TB iTunes Library from Win 7 64bit to my brand new Mac Mini with Lion. Like many, I made the assumption that because iTunes was an Apple product it would run at its best on an Apple product. So far

  • Installing iTunes on PC

    I am trying to install iTunes on my PC and I keep getting two error messages: Error 146: Could not write value to Key\software\Classes\.cdda\OpenWith List\tunes.exe Verify that you have sufficient access to that key, or contact your support personnel