From Clomosy Docs

Line 251: Line 251:


''Example:''
''Example:''
:'''Base Syntax'''
'''var'''
  MyList: TclStringList;
'''begin'''
  MyList := Clomosy.StringListNew;
 
  MyList.Add('Blue');
  MyList.Add('Red');
  MyList.Add('Yellow');
  MyList.Add('Purple');
  ShowMessage('Items: ' + MyList.Text);
  MyList.Free;
'''end;'''


:'''TRObject Syntax'''
:'''TRObject Syntax'''
Line 281: Line 267:
     MyList.Free;
     MyList.Free;
   }
   }
:'''Base Syntax'''
'''var'''
  MyList: TclStringList;
'''begin'''
  MyList := Clomosy.StringListNew;
 
  MyList.Add('Blue');
  MyList.Add('Red');
  MyList.Add('Yellow');
  MyList.Add('Purple');
  ShowMessage('Items: ' + MyList.Text);
  MyList.Free;
'''end;'''


=Insert=
=Insert=

Revision as of 12:01, 22 August 2024

TclStringList is a convenient class used to store and manage an array of strings, providing a list-like structure. TclStringList enables the ability to add, remove, sort, search, and perform other operations on string elements within the list.

To utilize TclStringList, a variable of type TclStringList should be defined.

Var
List:TclStringList;

Then the list should be created in the application.

List := Clomosy.StringListNew;

The StringListItemString(ListVariable,index) property of the Clomosy library is used to provide access to the items in the list.

Str:=Clomosy.StringListItemString(List,0);

Here are some important properties of the TclStringList class:

Capacity

Determines or returns the capacity of the list. Capacity represents the size of the allocated memory space for the list. The capacity is dynamically adjusted automatically during operations such as adding or removing elements.

Example:

TRObject Syntax
 void TclStringListCapacityOrnegi;
 var
   List: TclStringList;
 {
   List = Clomosy.StringListNew; //A new list has been created
   try
     List.Capacity = 5; // Set capacity to 10 
 
     // Check capacity
     ShowMessage('Capacity: '+IntToStr(List.Capacity)); 
 
     // Let's exceed capacity by adding more items
     List.Add('Item 1');
     List.Add('Item 2');
     List.Add('Item 3');
     List.Add('Item 4');
     List.Add('Item 5');
     List.Add('Item 6');
     List.Add('Item 7');
 
     // Check new capacity
     ShowMessage('New capacity: '+ IntToStr(List.Capacity));
   finally
     List.Free;
   }
 }
 
 {
   TclStringListCapacityOrnegi;
 }
Base Syntax
procedure TclStringListCapacityOrnegi;
var
  List: TclStringList;
begin
  List := Clomosy.StringListNew; //A new list has been created
  try
    List.Capacity := 5; // Set capacity to 10 

    // Check capacity
    ShowMessage('Capacity: '+IntToStr(List.Capacity)); 

    // Let's exceed capacity by adding more items
    List.Add('Item 1');
    List.Add('Item 2');
    List.Add('Item 3');
    List.Add('Item 4');
    List.Add('Item 5');
    List.Add('Item 6');
    List.Add('Item 7');

    // Check new capacity
    ShowMessage('New capacity: '+ IntToStr(List.Capacity));
  finally
    List.Free;
  end;
end;

begin
  TclStringListCapacityOrnegi;
end;

Output:

Capacity: 5
New capacity: 9

In the above example, we set the capacity of the list to 10 using the Capacity property of the TclStringList class. Then, by adding elements that exceed the capacity, we create a situation where the capacity is exceeded. In this case, the list automatically expands, and we check the new capacity.

Count

The Count property of the TclStringList class returns the number of items in the list. Here is an example:

Example:

TRObject Syntax
 var
   MyList: TclStringList;
   ItemCount: Integer;
 {
   MyList = Clomosy.StringListNew;
 
   // Add items
   MyList.Add('Apple');
   MyList.Add('Banana');
   MyList.Add('Orange');
 
   // Get item count
   ItemCount = MyList.Count;
   
   // Show result
   ShowMessage('There are ' + IntToStr(ItemCount) + ' items in the list.');
   
   MyList.Free;
 }
Base Syntax
var
  MyList: TclStringList;
  ItemCount: Integer;
begin
  MyList := Clomosy.StringListNew;

  // Add items
  MyList.Add('Apple');
  MyList.Add('Banana');
  MyList.Add('Orange');

  // Get item count
  ItemCount := MyList.Count;
  
  // Show result
  ShowMessage('There are ' + IntToStr(ItemCount) + ' items in the list.');
  
  MyList.Free;
end;

Output:

There are 3 items in the list.

Sorted

The Sorted property of the TclStringList class returns or sets a Boolean value that indicates whether the elements of the list are ordered.

Example:

TRObject Syntax
 var
   MyList: TclStringList;
   i: Integer;
 {
   MyList = Clomosy.StringListNew;
   
   // Add unordered items
   MyList.Add('Orange');
   MyList.Add('Banana');
   MyList.Add('Apple');
   
   // Show unordered list items
   ShowMessage('Unsorted List:');
   for (i = 0 to MyList.Count - 1)
     ShowMessage(Clomosy.StringListItemString(MyList,i));
   
   // Sort items
   MyList.Sorted = True;
   
   // Show sorted list items
   ShowMessage('Sorted List:');
   for (i = 0 to MyList.Count - 1)
     ShowMessage(Clomosy.StringListItemString(MyList,i));
   MyList.Free;
 }
Base Syntax
var
  MyList: TclStringList;
  i: Integer;
begin
  MyList := Clomosy.StringListNew;
  
  // Add unordered items
  MyList.Add('Orange');
  MyList.Add('Banana');
  MyList.Add('Apple');
  
  // Show unordered list items
  ShowMessage('Unsorted List:');
  for i := 0 to MyList.Count - 1 do
    ShowMessage(Clomosy.StringListItemString(MyList,i));
  
  // Sort items
  MyList.Sorted := True;
  
  // Show sorted list items
  ShowMessage('Sorted List:');
  for i := 0 to MyList.Count - 1 do
    ShowMessage(Clomosy.StringListItemString(MyList,i));
  MyList.Free;
end;

Output:

Unsorted List:
Orange
Banana
Apple
Sorted list:
Apple
Banana
Orange

Delimiter and DelimitedText

Sets or returns the separator character. Specifies the character used to separate the string when using the DelimitedText property.

Example:

TRObject Syntax
 var
  list:TclStringList;
  str:String;
 {
   str = 'hello,world,test';
   list = Clomosy.StringListNew;
   
   List.StrictDelimiter = True;
   List.Delimiter = ',';
   List.DelimitedText = str; 
   Str= Clomosy.StringListItemString(List,0);//Returns element 0
   ShowMessage(str);
   ShowMessage(List.Count);
 }
Base Syntax
var
 list:TclStringList;
 str:String;
begin
  str := 'hello,world,test';
  list := Clomosy.StringListNew;
  
  List.StrictDelimiter :=True;
  List.Delimiter := ',';
  List.DelimitedText := str; 
  Str:=Clomosy.StringListItemString(List,0);//Returns element 0
  ShowMessage(str);
  ShowMessage(List.Count);
end;

Add

The Add property of the TclStringList class is used to add a new item to the end of the list.

Example:

TRObject Syntax
 var
   MyList: TclStringList;
 {
   MyList = Clomosy.StringListNew;
   
   MyList.Add('Blue');
   MyList.Add('Red');
   MyList.Add('Yellow');
   MyList.Add('Purple');
 
   ShowMessage('Items: ' + MyList.Text);
   MyList.Free;
 }
Base Syntax
var
  MyList: TclStringList;
begin
  MyList := Clomosy.StringListNew;
  
  MyList.Add('Blue');
  MyList.Add('Red');
  MyList.Add('Yellow');
  MyList.Add('Purple');

  ShowMessage('Items: ' + MyList.Text);
  MyList.Free;
end;

Insert

The Insert property of the TclStringList class is used to insert a new item at a specific location.

Example:

Base Syntax
var
  MyList: TclStringList;
begin
  MyList := Clomosy.StringListNew;
  
  MyList.Add('Apple');
  MyList.Add('Banana');
  MyList.Add('Orange');
  
  // Add "Grape" to Index 1
  MyList.Insert(1, 'Grape');
  
  ShowMessage('Items: ' + MyList.Text);
  
  MyList.Free;
end;
TRObject Syntax
 var
   MyList: TclStringList;
 {
   MyList = Clomosy.StringListNew;
   
   MyList.Add('Apple');
   MyList.Add('Banana');
   MyList.Add('Orange');
   
   // Add "Grape" to Index 1
   MyList.Insert(1, 'Grape');
   
   ShowMessage('Items: ' + MyList.Text);
   
   MyList.Free;
 }


As a result, the contents of the list are displayed using the ShowMessage function. You will get a message like "Items: Apple Grape Banana Orange" as output.

Delete

The Delete property of the TclStringList class is used to delete the item at a particular index from the list.

Example:

Base Syntax
var
  MyList: TclStringList;
begin
  MyList := Clomosy.StringListNew;
  
  MyList.Add('Apple');
  MyList.Add('Banana');
  MyList.Add('Orange');
  
  // Delete "Grape" to Index 1
  MyList.Delete(1);
  
  ShowMessage('Items: ' + MyList.Text);
  
  MyList.Free;
end;
TRObject Syntax
 var
   MyList: TclStringList;
 {
   MyList = Clomosy.StringListNew;
   
   MyList.Add('Apple');
   MyList.Add('Banana');
   MyList.Add('Orange');
   
   // Delete "Grape" to Index 1
   MyList.Delete(1);
   
   ShowMessage('Items: ' + MyList.Text);
   
   MyList.Free;
 }

Clear

The clear property is used to clear all the items of the list.

Example:

Base Syntax
var
  MyList: TclStringList;
begin
  MyList := Clomosy.StringListNew;
  
  MyList.Add('Apple');
  MyList.Add('Banana');
  MyList.Add('Orange');
  ShowMessage('Items: ' + MyList.Text);
  
  // Clear "Grape" to Index 1
  MyList.Clear;
  
  ShowMessage('Items: ' + MyList.Text);
  
  MyList.Free;
end;
TRObject Syntax
 var
   MyList: TclStringList;
 {
   MyList = Clomosy.StringListNew;
   
   MyList.Add('Apple');
   MyList.Add('Banana');
   MyList.Add('Orange');
   ShowMessage('Items: ' + MyList.Text);
   
   // Clear "Grape" to Index 1
   MyList.Clear;
   
   ShowMessage('Items: ' + MyList.Text);
   
   MyList.Free;
 }

As a result, the updated content of the list is displayed using the ShowMessage function. You will get a message like "Items:" (empty) as output because all items have been deleted.

IndexOf

The IndexOf property of the TclStringList class is used to find the index of a particular item in the list.

Example:

Base Syntax
var
  MyList: TclStringList;
  Index: Integer;
begin
  MyList := Clomosy.StringListNew;
  
  MyList.Add('Apple');
  MyList.Add('Banana');
  MyList.Add('Orange');
  
  Index := MyList.IndexOf('Banana');
  
  ShowMessage('Indeks: ' + IntToStr(Index));
  
  MyList.Free;
end;
TRObject Syntax
 var
   MyList: TclStringList;
   Index: Integer;
 {
   MyList = Clomosy.StringListNew;
   
   MyList.Add('Apple');
   MyList.Add('Banana');
   MyList.Add('Orange');
   
   Index = MyList.IndexOf('Banana');
   
   ShowMessage('Indeks: ' + IntToStr(Index));
   
   MyList.Free;
 }

Exchange

The Exchange feature is used to swap two items.

Example:

Base Syntax
var
  MyList: TclStringList;
  Index: Integer;
begin
  MyList := Clomosy.StringListNew;
 
  MyList.Add('Apple');
  MyList.Add('Banana');
  MyList.Add('Orange');
  
  MyList.Exchange(0,2);
  
  ShowMessage('Items: ' + MyList.Text);
  
  MyList.Free;
end;
TRObject Syntax
 var
   MyList: TclStringList;
   Index: Integer;
 {
   MyList = Clomosy.StringListNew;
  
   MyList.Add('Apple');
   MyList.Add('Banana');
   MyList.Add('Orange');
   
   MyList.Exchange(0,2);
   
   ShowMessage('Items: ' + MyList.Text);
   
   MyList.Free;
 }


As a result, the contents of items that have been updated using the ShowMessage function are displayed. You will get a message like "Items: Orange Banana Apple" as output.

Sort

The sort property is used to sort the items of the list alphabetically.

Example:

Base Syntax
var
  MyList: TclStringList;
  Index: Integer;
begin
  MyList := Clomosy.StringListNew;
  
  MyList.Add('Orange');
  MyList.Add('Banana');
  MyList.Add('Apple');
  
  ShowMessage('Items: ' + MyList.Text);
  
  MyList.Sort;
  
  ShowMessage('Items: ' + MyList.Text);
  MyList.Free;
end;
TRObject Syntax
 var
   MyList: TclStringList;
   Index: Integer;
 {
   MyList = Clomosy.StringListNew;
   
   MyList.Add('Orange');
   MyList.Add('Banana');
   MyList.Add('Apple');
   
   ShowMessage('Items: ' + MyList.Text);
   
   MyList.Sort;
   
   ShowMessage('Items: ' + MyList.Text);
   MyList.Free;
 }

As a result, the content of items sorted using the ShowMessage function is displayed. You will get a message like "Items: Apple Banana Orange" as output.

Install from File / LoadFromFile

To load text data from a specified file into a TclStringList object, the 'LoadFromFile' method is used. The purpose of this method is to fetch text data from a file into the program. The data loaded into the TclStringList can be read and processed line by line.

Example:

TRObject Syntax
 var 
   strList:TclStringList;
   clQueryLoadFile : TclJsonQuery;
   path:String;
 {
   strList = Clomosy.StringListNew;
   path = Clomosy.AppFilesPath+'note.txt';
   //ShowMessage(path);
   strList.LoadFromFile(path,0);
   ShowMessage(strList.Text); // The data in the file is displayed by putting it into a String List.
   clQueryLoadFile = Clomosy.ClDataSetFromJSON(strList.Text);
   ShowMessage(clQueryLoadFile.getJSONString);
 }
Base Syntax
var 
 strList:TclStringList;
 clQueryLoadFile : TclJsonQuery;
 path:String;
begin
 strList:=Clomosy.StringListNew;
 path:=Clomosy.AppFilesPath+'note.txt';
 //ShowMessage(path);
 strList.LoadFromFile(path,0);
 ShowMessage(strList.Text); // The data in the file is displayed by putting it into a String List.
 clQueryLoadFile:=Clomosy.ClDataSetFromJSON(strList.Text);
 ShowMessage(clQueryLoadFile.getJSONString);
end;


Writing to a File / SaveToFile

It is a class used to hold and manage lines of text. The SaveToFile method is used to save these lines of text to a file. When you call the SaveToFile method, all the lines of text in the TclStringList are written to the specified file.

Example: Using the TclStringList class, lines of text are added to a file and then read from the file and displayed on the screen. First, a TclStringList object named StringList1 and a file path variable named FileStr are defined. The showFile procedure loads the lines from the file into the StringList1 object if the specified file exists, and then displays each line on the screen. In the main program block, the StringList1 object is created, and the FileStr variable is set to point to the MyFile.Txt file located in the application files path. Three lines of text are added to the StringList1 object, and these lines are saved to the file. Finally, the showFile procedure is called to display the lines from the file on the screen, and the StringList1 object is freed.

TRObject Syntax
  var
    StringList1: TclStringList;
    FileStr:String;
    i: Integer;
  void showFile;
  {
    If (clFileExists(FileStr,''))
      StringList1.LoadFromFile(FileStr,0);
      
    for (i = 0 to StringList1.Count - 1)
      ShowMessage(Clomosy.StringListItemString(StringList1,i));
  }
  
  {
    StringList1 = Clomosy.StringListNew;
    FileStr = clPathCombine('MyFile.Txt',Clomosy.AppFilesPath); 
    try
      // Adding rows to TclStringList
      StringList1.Add('This is line one.');
      StringList1.Add('This is line two.');
      StringList1.Add('This is line three.');
  
      // Saving TclStringList to a file
      StringList1.SaveToFile(FileStr,0);
      showFile;
    finally
      StringList1.Free;
    }
  }

Base Syntax
  var
    StringList1: TclStringList;
    FileStr:String;
    i: Integer;
  procedure showFile;
  begin
    If clFileExists(FileStr,'') then
      StringList1.LoadFromFile(FileStr,0);
      
    for i := 0 to StringList1.Count - 1 do
      ShowMessage(Clomosy.StringListItemString(StringList1,i));
  end;
  
  begin
    StringList1 := Clomosy.StringListNew;
    FileStr := clPathCombine('MyFile.Txt',Clomosy.AppFilesPath); 
    try
      // Adding rows to TclStringList
      StringList1.Add('This is line one.');
      StringList1.Add('This is line two.');
      StringList1.Add('This is line three.');
  
      // Saving TclStringList to a file
      StringList1.SaveToFile(FileStr,0);
      showFile;
    finally
      StringList1.Free;
    end;
  end;