Solved

Function to Sort Alphabetically raws of text string from a text file.

Posted on 2004-03-30
15
249 Views
Last Modified: 2010-04-05
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
0
Comment
Question by:Hasim
15 Comments
 
LVL 45

Expert Comment

by:aikimark
ID: 10720187
if you use a TStringList variable, you can read the file directly into the variable and invoke the variable's .Sort method.
0
 

Author Comment

by:Hasim
ID: 10720252
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
0
 
LVL 45

Expert Comment

by:aikimark
ID: 10720441
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.
0
 
LVL 45

Expert Comment

by:aikimark
ID: 10720471
Sorry to concentrate on the TStringList, but it seems the most logical, efficient, and fastest solution.
0
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10720677
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
0
 
LVL 2

Expert Comment

by:Ratje
ID: 10721618
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\test.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:BLOCK='+sList.Strings[I]) ;

  freeAndNil(sList) ;
end;

All that remains is saving the data again.


Rat
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Expert Comment

by:d1kGroup
ID: 10721756
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;
0
 
LVL 45

Accepted Solution

by:
aikimark earned 125 total points
ID: 10723171
d1kGroup,

<...only to sort...>
Really?  What about:

procedure SortTextFile(FileName: String);
var
  sList: TStringList;
  nLoop: Integer;
begin
  sList:= TStringList.Create;
  sList.LoadFromFile(FileName);
  sList.Sort;
  for nLoop := 1 to sList.Count -1  do
     sList.Strings[nLoop] := 'SAAEP:BLOCK=' + sList.Strings[nLoop] + ';'
  sList.SaveToFile(FileName);
  sList.Free;
end;
0
 
LVL 45

Expert Comment

by:aikimark
ID: 10723263
oops, that should have read:
...
  for nLoop := 0 to sList.Count -1  do
...
0
 
LVL 45

Expert Comment

by:aikimark
ID: 10742677
Hasim, are you still with us?
0
 
LVL 45

Expert Comment

by:aikimark
ID: 10765002
Hasim?
0
 
LVL 45

Expert Comment

by:aikimark
ID: 10855719
Hasim?
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now