Hasim
asked on
Function to Sort Alphabetically raws of text string from a text file.
I'm writing Delphi 7 program to sort text string data from the text file as follows:-
CSRLB
MOIPHI
HLUAP2
MOIPHO
SSI
C7ITTH4
HRRLAP3
HSSPWAP
TONE
TIMER
HNMSPAP
C7OTHDK
C7OTGBE
MUEP
MJEC
ASDH
ETGB4IF
UPDC
MSPUAP
BL2
ETGB3IF
MSMOAP
MSMO
MHOC
DQCCH
MHIC
MSMT
C7OGATE
BL
HASCAP2
DROP
ECDH
I would like to sort the above text data into
ASDH
BL
BL2
CSRLB
etc
Thanks
Hasim Hj. Abdul Hamid
CSRLB
MOIPHI
HLUAP2
MOIPHO
SSI
C7ITTH4
HRRLAP3
HSSPWAP
TONE
TIMER
HNMSPAP
C7OTHDK
C7OTGBE
MUEP
MJEC
ASDH
ETGB4IF
UPDC
MSPUAP
BL2
ETGB3IF
MSMOAP
MSMO
MHOC
DQCCH
MHIC
MSMT
C7OGATE
BL
HASCAP2
DROP
ECDH
I would like to sort the above text data into
ASDH
BL
BL2
CSRLB
etc
Thanks
Hasim Hj. Abdul Hamid
if you use a TStringList variable, you can read the file directly into the variable and invoke the variable's .Sort method.
ASKER
Thank for your comments.
Unfortunately, I'am not using the TStringList.
I needs the sorted text data in a text file so that I can add command in front of each text string as follows:-
Sorted data in the text file
ASDH
BL
etc
Final Text File after appending SAAEP:BLOCK= in front of each
SAAEP:BLOCK=ASDH;
SAAEP:BLOCK=BL;
etc
Appreciate your further help.
Thanks
Unfortunately, I'am not using the TStringList.
I needs the sorted text data in a text file so that I can add command in front of each text string as follows:-
Sorted data in the text file
ASDH
BL
etc
Final Text File after appending SAAEP:BLOCK= in front of each
SAAEP:BLOCK=ASDH;
SAAEP:BLOCK=BL;
etc
Appreciate your further help.
Thanks
You could loop through the TStringList items and output them with the prepended string 'SAAEP:BLOCK=' and appended string ';'
or...
loop through the items in the .Strings[#] property, prepending and appending the strings (see above). Use the .SaveToFile method to save the changed strings.
or...
loop through the items in the .Strings[#] property, prepending and appending the strings (see above). Use the .SaveToFile method to save the changed strings.
Sorry to concentrate on the TStringList, but it seems the most logical, efficient, and fastest solution.
Hasim,
First, you need to explain more, cause no one can guess what you are doing.
Are you laoding the file already into delphi, if so, are you loading it into a control (Example - TMemo)?
If not, are you loading it into a data container, list, array, etc.
If you aren't loading it into delphi, does a file exist on hardrive and you want to sort there?
Please explain exactly what you are doing and with what or with what you what to do it with.
Shane
First, you need to explain more, cause no one can guess what you are doing.
Are you laoding the file already into delphi, if so, are you loading it into a control (Example - TMemo)?
If not, are you loading it into a data container, list, array, etc.
If you aren't loading it into delphi, does a file exist on hardrive and you want to sort there?
Please explain exactly what you are doing and with what or with what you what to do it with.
Shane
Don't give me the points, just providing a simple example of the answer given here allready:
procedure TForm1.Button1Click(Sender : TObject);
var
sList : TStringlist ;
I : Integer ;
begin
memo1.Lines.LoadFromFile(' c:\temp\te st.txt') ;
sList := Tstringlist.create();
for I := 0 to Memo1.Lines.Count do
sList.Add(memo1.Lines[I]) ;
memo1.Clear ;
sList.Sort;
for I := 1 to sList.Count -1 do
memo1.lines.Add('SAAEP:BLO CK='+sList .Strings[I ]) ;
freeAndNil(sList) ;
end;
All that remains is saving the data again.
Rat
procedure TForm1.Button1Click(Sender
var
sList : TStringlist ;
I : Integer ;
begin
memo1.Lines.LoadFromFile('
sList := Tstringlist.create();
for I := 0 to Memo1.Lines.Count do
sList.Add(memo1.Lines[I]) ;
memo1.Clear ;
sList.Sort;
for I := 1 to sList.Count -1 do
memo1.lines.Add('SAAEP:BLO
freeAndNil(sList) ;
end;
All that remains is saving the data again.
Rat
you can use a TStringList only to sort. try this
procedure SortTextFile(FileName: String);
var
list: TStringList;
begin
list := TStringList.Create;
list.LoadFromFile(FileName );
list.Sort;
list.SaveToFile(FileName);
list.Free;
end;
procedure SortTextFile(FileName: String);
var
list: TStringList;
begin
list := TStringList.Create;
list.LoadFromFile(FileName
list.Sort;
list.SaveToFile(FileName);
list.Free;
end;
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
oops, that should have read:
...
for nLoop := 0 to sList.Count -1 do
...
...
for nLoop := 0 to sList.Count -1 do
...
Hasim, are you still with us?
Hasim?
Hasim?