![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна помощь [D6, WinXP]
Marat © (2006-11-08 08:29:00)Здравствуйте, мастера.
Вопрос такой.
Считываю текстовый файл.
var
F: TextFile;
S: string;
i: integer;
begin
try
AssignFile(F, 'C:\Projects\Bazis\T2_20061101.txt');
Reset(F);
SG.ColCount := 1;
SG.RowCount := 1;
while not EOF(F) do
begin
ReadLn(F, S);
OemToChar(@S[1],@S[1]);
SG.Col := 0;
while Pos(' ', S) > 0 do
begin
SG.Cells[SG.Col, SG.Row+1] := Copy(S, 1, Pos(' ', S)-1);
Delete(S, 1, Pos(' ', S));
if SG.ColCount - SG.Col = 1
then
begin
SG.ColCount := SG.ColCount + 1
end;
SG.Col := SG.Col + 1;
end;
SG.Cells[SG.Col, SG.Row+1] := S;
SG.RowCount := SG.RowCount + 1;
SG.Row := SG.Row + 1;
end;
SG.RowCount := SG.RowCount - 1;
finally
CloseFile(F);
end;
этот алгоритм верен для файла, в котором слова разделены пробелом.
А у меня файл, в котором между словами может быть 1-8 пробелов. Как быть?
Marat (2006-11-08 12:22:00) [1]Спасибо большое! Помогло!
MBo (2006-11-08 08:58:00) [2]
procedure TForm13.Button2Click(Sender: TObject);
var
List, TempList: TStringList;
s: string;
i: Integer;
begin
List := TStringList.Create;
TempList := TStringList.Create;
List.LoadFromfile('E:\a.txt');
SG.RowCount := List.Count;
for i := 0 to List.Count - 1 do begin
s := List[i];
OemToCharBuff(PChar(s), PChar(s), Length(s));
TempList.CommaText := s;
if SG.ColCount < TempList.Count then
SG.ColCount := TempList.Count;
SG.Rows[i].Assign(TempList);
end;
List.Free;
TempList.Free;
end;
Орион (2006-11-08 08:51:00) [3]есть такая функция
TrimLeft