![]() |
|
#1
|
|||
|
|||
![]() У меня вопрос есть .txt файл пример содержимого:
Код:
aaa:bbb ccc:ddd eee:fff логин:пароль Нужно на дельфи (при нажатии на кнопку) чтобы данные заносились в combobox (скорее всего циклом for) как 'ААА - BBB' (Где AAA - login, BBB - пароль, в .txt логин:пароль) т.е. цикл for берёт данные разделяет их и записывает. Огромное спасибо тому, кто поможет. |
#2
|
|||
|
|||
![]() можно структуры использовать или для текстов TStrings, TStringList
Истина где-то рядом... Последний раз редактировалось beavi5, 28.04.2010 в 19:51. |
#3
|
|||
|
|||
![]() Код:
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). |
#4
|
|||
|
|||
![]() Быть может не в тему но всё же спрошу:
Как написать в .dll (Delphi 7, DLL Wizard) функцию, которая будет возвращать в программу StringsList (точнее itemы в comboBox), а программа просто будет вызывать функцию с параметром ? В .dll пишу функцию по аналогу: Код:
function additemsf(ACombo : TComboBox) : TStringList; cdecl; var I : Integer; Buf : String; Lst : TStringList; begin ACombo.Items.Clear; Lst := TStringList.Create; Lst.Add('MyItem1'); Lst.Add('MyItem2'); Try For I := 0 to Lst.Count-1 Do Begin ACombo.Items.Add(Lst[i]); End; Finally Lst.Free; End; end; additemsf(ComboBox1); |
#5
|
|||
|
|||
![]() Ну так и писать. просто пометь ее как export. ну и в секции экспорта укажи. со строками можно обойтись только этим.
|
#6
|
|||
|
|||
![]() На то что я написал выше выдаёт ошибку из-за ACombo : TComboBox, не подскажете как поправить ?
|
#7
|
|||
|
|||
![]() Проблема решена.
|