![]() |
|
#1
|
|||
|
|||
![]() В продолжение этой темы: _http://delphisources.ru/forum/showthread.php?t=11977.
У меня вопрос есть .txt файл пример содержимого: Код:
aaa:bbb ccc:ddd eee:fff логин:пароль Надо поместить логин в Edit1, пароль в Edit2. Точнее.. Из файла грузим в memo1, и потом уже разобрать как ? Не подскажите как это сделать ? Заранее спасибо. Последний раз редактировалось Vladislav, 29.04.2010 в 22:39. |
#2
|
||||
|
||||
![]() Раз дан список логин пароль, то помещу логины и пароли в мемо.
Код:
var login,pass,sym,str:string; i,meterofsymbols:integer; filetxt,loginstr,passstr:tstringlist; *** filetxt:=tstringlist.Create; filetxt.loadfromfile('txt.txt'); loginstr:=tstringlist.Create; passstr:=tstringlist.Create; *** for i:=0 to (filetxt.count-1) do begin str:=filetxt.Strings[i]; sym:=''; login:=''; pass:=''; meterofsymbols:=1; while sym<>':' do begin sym:=copy(str,meterofsymbols,1); if sym=':' then break; login:=login+sym; meterofsymbols:=meterofsymbols+1; end; pass:=copy(str,meterofsymbols+1,length(str)+1-meterofsymbols); loginstr.Add(login); passstr.add(pass); end; memo1.Text:=loginstr.Text; memo2.Text:=passstr.Text; От корректности формулировки поставленной задачи зависят: качество, скорость и желание её реализации!
|
#3
|
||||
|
||||
![]() Я бы чуток по-другому сделал:
Код:
var str:string; i, j:integer; filetxt,loginstr,passstr:tstringlist; *** filetxt:=tstringlist.Create; filetxt.loadfromfile('txt.txt'); loginstr:=tstringlist.Create; passstr:=tstringlist.Create; *** for i := 0 to Pred(filetxt.count) do begin str:=filetxt.Strings[i]; j := Pos(':', str); if j > 0 then begin loginstr.Add(Copy(str, 1, j - 1)); passstr.add(Copy(str, j + 1, Length(Str) - j)); end; end; memo1.Text := loginstr.Text; memo2.Text := passstr.Text; |
#4
|
||||
|
||||
![]() dr. F.I.N, хорошо оптимизировал.
От корректности формулировки поставленной задачи зависят: качество, скорость и желание её реализации!
|
#5
|
||||
|
||||
![]() Вот мой вариант:
Код:
var login,pass,s:string; f:TextFile begin assignFile(f,FileWay); reset(f); wile npt EOF(f) do begin readln(f,s); login:=copy(s,0,pos(':',s)-1); pass:=copy(s,pos(':',s)+1,length(s)-pos(':',s)+1); //далее созраняешь куда нужно и так пока всё не считаешь end; end; Не твори зла, и жизнь повернется к тебе передом ![]() |
#6
|
||||
|
||||
![]() Bars1992, оптимизация с файлом - это хорошо, но вот по коду:
1) У меня Код:
j := Pos(':', str); if j > 0 then ![]() 2) в данной задаче не очень критично, однако твое трехкратное использоване функции POS "не выгодно". Все-таки ряд вычислений проще сделать 1 раз и запомнить результат, чем 3 раза делать одно и то же ![]() 3) У тебя Код:
login:=copy(s,0,pos(':',s)-1); ![]() |
#7
|
||||
|
||||
![]() Просто на всякого рода оптимизации время небыло. Способ единичного вычисления мне понравился возьму на вооружение
![]() И кстати забыл CloseFile(f); ![]() Не твори зла, и жизнь повернется к тебе передом ![]() |
#8
|
|||
|
|||
![]() Всем спасибо, репутацию добавил
![]() |