[fpc-pascal]parsing text and working with strings
    Michael Van Canneyt 
    michael.vancanneyt at wisa.be
       
    Fri Oct 19 09:26:10 CEST 2001
    
    
  
On Thu, 18 Oct 2001, the reverend wrote:
> what is the most efficient way to parse a space-delimited fixed width text
> file to an integer array?
Read line by line, copy width characters and convert to integer:
uses SysUtils;
Var
  F : Text;
  Line : String;
  Number : Integer;
begin
  // Assign file etc.
  While not EOF(F) do
    begin
    Read(F,Line);
    While Length(Line)>0 do
      begin
      // Change trim by TrimRight or TrimLeft if you know for sure the numbers
      // Are left or right aligned. That is more efficient.
      Number:=StrToInt(Trim(Copy(Line,1,Width)))
      Delete(Line,1,Width);
      // Store number somewhere.
      end;
    end;
end;
>
> also, i am rather new to freepascal and i have just discovered the plethora
> of string functions spread about in different libraries (strings, sysutils,
> and the system unit).  i would prefer to work with Strings, not PChar,
> because i am rather weak on working with pointers, but i have written some
> functions that basically make PChar functions into String functions for
> simplicity.  (and what is an AnsiString?)
>
> some functions i am looking for are:
>   1) strip duplicate delimiters, (can be used to remove extra spaces [#32]
> also)
>   2) parse delimited string to array
>   3) translate a table of characters in string to another table
>   4) ...
SysUtils contains routines that work on AnsiStrings. Ansistrings are like normal
pascal strings, but have unlimited length.
>
> is there a library that perhaps has a lot of this done already outside the
> standard freepascal libraries?  for simplicity's sake, i'd prefer to just
> work with a single type, hopefully Strings, but i can learn to use PChar if
> it is in my favor.
The SysUtils unit doesn't contain the specific calls you are looking for, but can
be used to construct the routines you want.
Michael.
    
    
More information about the fpc-pascal
mailing list