Curl Global Community
Page 6: Structure of a Program that Reads our Score Data - Printable Version

+- Curl Global Community (
+-- Forum: Tutorials (
+--- Forum: Public Training (
+---- Forum: Curl IDE Made Easy (
+----- Forum: Try 5: Reading Our Score Data (
+----- Thread: Page 6: Structure of a Program that Reads our Score Data (/showthread.php?tid=76)

Page 6: Structure of a Program that Reads our Score Data - ashimo - 06-20-2011

Structure of the program that reads our score data

In this example, the data that is read from the file is displayed using a RecordGrid.

1. Specifying the location of the file

let loc:Url = {url score.txt}

Specify the location of the file.

2. Declaration of a TextInputStreams

let in:#TextInputStream

To read data from the file, we have to declare TextInputStream.

3. Declaration of character string array used to save read-in data

let data-array:StringArray = {StringArray}

Declare the character string array to be used for the data read from a file.

4. Declaration of RecordSet used to store data

let record-set:RecordSet =
            {RecordField name, domain = String},
            {RecordField age, domain = int},
            {RecordField score, domain = int}

In this sample, the data obtained from a file is converted to a RecordSet, and then later displayed using RecordGrid.

5. Opening a file

set in = {read-open loc}

Using read-open, we open the specified file as a TextInputStream.

6. Reading the data

{until in.end-of-stream? do
    {if-non-null line = {} then
        {data-array.append {}}

The data is read, line-by-line, and then added to the character string array.

7. Closing the file

{if-non-null in then

Regardless of whether the data read from the file is successful or not, the open file must be closed.

8. Data conversion

{for data:String in data-array do
    let array:StringArray = {data.split split-chars = ,}
    {if array.size == 3 then
                name = array[0], age = {array[1].to-int}, score = {array[2].to-int}

We have to convert the data that is stored in a StringArray to a RecordSet. Each line of data in the file corresponds to one record. Also, each field is delimited by a comma (,). So, using the String.split method and a comma (,) as the delimiter, we partition the data and then save it into an array. Using the data in that array, we create RecordData, and then add it to a RecordSet.

9. Displaying the layout

    record-source = record-set,
    width = 10cm,
    height = 3cm

We take the RecordSet that we created in (8) and then display it using a RecordGrid.

Working with CSV Data

The Curl language also provides a predefined API for reading and writing CSV (comma separated values) formatted files. Using CsvRecordSet, you can load data directly as a RecordSet for further manipulation and/or display. Please refer to the Curl documentation for more information