Показать сообщение отдельно
  #3  
Старый 28.04.2010, 19:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
procedure ParseTextFile(AFileName : String; ACombo : TComboBox);
var
  I : Integer;
  Buf : String;
  Lst : TStringList;
begin
  If ACombo = Nil Then Raise Exception.Create('No ComboBox passed.');
  If Not FileExists(AFileName) Then Raise Exception.Create('File doesn''t exists!');

  ACombo.Items.Clear;
  Lst := TStringList.Create;
  Try
     Lst.LoadFromFile(AFileName);
     For I := 0 to Lst.Count-1 Do
       Begin
          If Pos(':',Lst[i]) <> 0 
            Then
               Begin
                  Buf := StringReplace(Lst[i],':',' - ',[]);
                  ACombo.Items.Add(Buf);
               End
            Else
               ShowMessage(Format('Skipped line %d : %s',[I,Lst[i]]));
       End;
  Finally
     Lst.Free;
  End;
end;

1. Сделано только простое преобразование строки. Без разбора. Если нужен именно разбор, то то место, где StringRelpace надо заменить на что-то типа:
Код:
var
  SepPos : Integer;
  UserName, Password : String;
begin
  SepPos := Pos(':',Lst[i]);
  UserName := Copy(Lst[i],1,SepPos-1);
  Passwrod := Copy(Lst[i],SepPos+1,Length(Lst[i])-SepPos+1);
end;

2. A вообще, такие вещи лучше хранить в xml. И читать удобнее (глазами), и править руками и парсить проще (исп. компонент TXMLDocument).
Ответить с цитированием