![]() |
|
|
#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
|
|||
|
|||
|
Всем спасибо, репутацию добавил
. |