Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.04.2010, 22:36
Vladislav Vladislav вне форума
Прохожий
 
Регистрация: 24.04.2010
Сообщения: 48
Репутация: 10
По умолчанию .txt to edit

В продолжение этой темы: _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  
Старый 30.04.2010, 07:25
Аватар для march
march march вне форума
Начинающий
 
Регистрация: 04.05.2009
Сообщения: 110
Репутация: 18
По умолчанию

Раз дан список логин пароль, то помещу логины и пароли в мемо.
Код:
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  
Старый 30.04.2010, 07:37
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Я бы чуток по-другому сделал:
Код:
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  
Старый 30.04.2010, 07:40
Аватар для march
march march вне форума
Начинающий
 
Регистрация: 04.05.2009
Сообщения: 110
Репутация: 18
По умолчанию

dr. F.I.N, хорошо оптимизировал.
__________________
От корректности формулировки поставленной задачи зависят:
качество, скорость и желание её реализации!
Ответить с цитированием
  #5  
Старый 30.04.2010, 07:43
Аватар для Bars1992
Bars1992 Bars1992 вне форума
Активный
 
Регистрация: 24.04.2010
Адрес: Украина, Кременчуг
Сообщения: 249
Репутация: 22
По умолчанию

Вот мой вариант:
Код:
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  
Старый 30.04.2010, 08:02
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Bars1992, оптимизация с файлом - это хорошо, но вот по коду:
1) У меня
Код:
j := Pos(':', str);
   if j > 0 then
Это сделано для защиты от "дурака" Ведь никто не гарантирует наличия ":". Всякое в жизни бывает, тем более файл текстовый.
2) в данной задаче не очень критично, однако твое трехкратное использоване функции POS "не выгодно". Все-таки ряд вычислений проще сделать 1 раз и запомнить результат, чем 3 раза делать одно и то же
3) У тебя
Код:
login:=copy(s,0,pos(':',s)-1);
И читают как бЭ с первого символа строки
Ответить с цитированием
  #7  
Старый 30.04.2010, 09:51
Аватар для Bars1992
Bars1992 Bars1992 вне форума
Активный
 
Регистрация: 24.04.2010
Адрес: Украина, Кременчуг
Сообщения: 249
Репутация: 22
По умолчанию

Просто на всякого рода оптимизации время небыло. Способ единичного вычисления мне понравился возьму на вооружение

И кстати забыл
CloseFile(f);
__________________
Не твори зла, и жизнь повернется к тебе передом
Ответить с цитированием
  #8  
Старый 30.04.2010, 11:40
Vladislav Vladislav вне форума
Прохожий
 
Регистрация: 24.04.2010
Сообщения: 48
Репутация: 10
По умолчанию

Всем спасибо, репутацию добавил .
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:47.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025