|
Вопрос # 4 376/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты! Возник такой вопрос... Понимаю что ничего сложного но хотелось бы узнать... Как разделить 2 слова из memo через ; и вставить ее в поля edit 1,2... 123;321 без copy, delete. Копал в сторону DelimitedText. Если есть возможность помогите пожалуйста с решением этого вопроса, желательно пример, или готовый код с объяснением было бы супер, заранее спасибо.
 |
Вопрос задал: Smiluk (статус: Посетитель)
Вопрос отправлен: 3 июля 2010, 00:38
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну вот как-то так:
procedure SplitString(const S: string; var Res1, Res2: string);
var
List: TStringList;
begin
List:= TStringList.Create();
try
List.Delimiter:= ';';
List.DelimitedText:= S;
if List.Count <> 0
then Res1:= List[0];
if List.Count > 1
then Res2:= List[1];
finally
List.Free();
end;
end;
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 3 июля 2010, 09:00
Оценка за ответ: 5
Комментарий к оценке: Спасибо большое! То что нужно. Вопрос закрыт.
|
Мини-форум вопроса
Всего сообщений: 24; последнее сообщение — 10 июля 2010, 15:35; участников в обсуждении: 2.
Страницы: [1] [2] [Следующая »]
|
Smiluk (статус: Посетитель), 3 июля 2010, 14:26 [#1]:
Я что то не поглядел) Если мы загружаем большой список в мемо :
123;321
456;654
789;987
Как изменить переменную tstringlist - "List[?];" чтобы он загружал не только первую и вторую строчку после ;, а если значение правильное или не правильное, то загружал дальше по очереди до n бесконечности.
|
|
min@y™ (статус: Доктор наук), 3 июля 2010, 14:34 [#2]:
Это просто. Грузишь файло в другой List2: TStringList, потом делаешь цикл от Index:= 0 до List2.Count - 1 и подставляешь куда надо (вместо Memo.Text) List2[Index]. Не надо грузить список в Memo, если этот список не нужно редактировать/просматривать.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 3 июля 2010, 14:43 [#3]:
Я ответ изменил немного, обрати внимание.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 3 июля 2010, 15:42 [#4]:
В чем и проблемма... хотелось бы загрузить список в memo, и если что, его можно было прям там и редактировать.
|
|
min@y™ (статус: Доктор наук), 3 июля 2010, 15:50 [#5]:
Ну если надо редактировать - грузи в мемо. Что тебе мешает?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 5 июля 2010, 05:25 [#6]:
Не могли бы вы сного помочь... Присваиваем к значению index:integer; , далее делаем цикл от 0 до -1 , memo оставил как есть... Объясните тупому пожалуйста..
var
List: TStringList;
Index: Integer;
begin
List:= TStringList.Create();
try
List.Delimiter:= ';';
List.DelimitedText:= memo1.Text;
if index=0
then Edit1.Text:= List[0];
if List.Count > -1
then Edit2.Text:= List[-1];
finally
List.Free();
end;
end;
|
|
min@y™ (статус: Доктор наук), 5 июля 2010, 08:10 [#7]:
Я не понимаю, чего ты хочешь добиться.
Объясни подробнее, чего ты хочешь от программы.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 5 июля 2010, 16:39 [#8]:
Хочу попробовать написать проверку email на валидность
|
|
min@y™ (статус: Доктор наук), 5 июля 2010, 16:50 [#9]:
Цитата (Smiluk):
Хочу попробовать написать проверку email на валидность
Ну и как эта программа должна работать?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 5 июля 2010, 17:01 [#10]:
У меня идет авторизация на сайте, edit1 - mail, edi2 - password, если значение правильное в memo 2 добавляется аккаунт, если нет то в другой. Так вот что я и хочу сделать.. загрузить список аккаунтов, mail;pssword , и чтобы edit1 - mail, edi2 - password подставлялись значения.
|
|
min@y™ (статус: Доктор наук), 5 июля 2010, 17:10 [#11]:
А зачем edit'ы?
У тебя ж список строк mail;pssword в мемо хранится...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 5 июля 2010, 17:12 [#12]:
потому что я сначало делал просто для проверки, и решил прикрутить список mail;pssword. помогите пожалуйста
|
|
min@y™ (статус: Доктор наук), 5 июля 2010, 18:23 [#13]:
Включаю телепатор...
У тебя есть список почтовых ящиков в текстовом файле формата "логин@сервер;пароль". Ты хочешь в цикле на них коннектиться. Так что ли?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 5 июля 2010, 21:05 [#14]:
Именно так.
|
|
min@y™ (статус: Доктор наук), 5 июля 2010, 21:20 [#15]:
Ну так и в чём проблема-то??!!11
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 5 июля 2010, 23:05 [#16]:
код не получается написать.. логично же..
|
|
min@y™ (статус: Доктор наук), 5 июля 2010, 23:23 [#17]:
Цитата (Smiluk):
код не получается написать.. логично же..
2Админ: сколько рейтинга надо набрать, чтобы получить разрешение материться?
Аффтар! Сформулируй вопрос по-человечески, а то у меня от телепатии болит голова.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 5 июля 2010, 23:48 [#18]:
Чекер на валидность эмэйл адресов.
edit1 - mail
edi2 - password
memo1 - список mail;pass
memo2 - Валид
memo3 - Не валид
1.У меня идет авторизация на сайте. Если значение правильное, то в memo2 добавляется аккаунт, если нет то в memo3.
2. Каждый раз вводить email;pass в edit думаю не реально, если у нас большой список адресов.
3. Нужно сделать , чтобы когда мы загружали список email;pass в memo1, то он подставлял значения в edit1 - mail, edit2 - pass. Если значение правельное , то email;pass идет в memo2, если нет, то в memo3 и так до самого конца нашего списка. Почему я не хочу поставлять значения сразу через memo, потому что если проверять по 1-2 аккаунта, то легче вбить их по стандарту.
4. Я не хочу использовать copy, delete, т.к. интересно стало можно ли загружать списов в edit's по другому.
5. У меня не получается сделать код, помагите пожалуйста. Думаю я все подробно изложил.
|
|
min@y™ (статус: Доктор наук), 6 июля 2010, 09:42 [#19]:
Цитата (Smiluk):
Чекер на валидность эмэйл адресов.
Ну вот типа как-то так:
function SplitString(const S: string; var Res1, Res2: string): Boolean;
var
List: TStringList;
begin
Result:= False;
List:= TStringList.Create();
try
List.Delimiter:= ';';
List.DelimitedText:= S;
if List.Count <> 0
then Res1:= List[0]
else Exit;
if List.Count > 1
then Res2:= List[1]
else Exit;
Result:= True;
finally
List.Free();
end;
end;
function IsValidEMail(const eMail, Pass: string): Boolean;
begin
// <--- Здесь попытка залогиниться. Если удалось, Result:= True, иначе - False
end;
var
UserCanselled: Boolean;
procedure TMainForm.StartButtonClick(Sender: TObject);
var
Index: Integer;
eMail, Pass: string;
begin
UserCanselled:= False;
StartButton.Enabled:= False;
StopButton.Enabled:= True;
Memo2.Clear();
Memo3.Clear();
try
for Index:= 0 to Memo1.Lines.Count - 1 do
begin
if SplitString(Memo1.Lines[Index], eMail, Pass)
then begin
Edit1.Text:= eMail;
Edit2.Text:= Pass;
if IsValidEMail(eMail, Pass)
then Memo2.Lines.Add(Memo1.Lines[Index])
else Memo3.Lines.Add(Memo1.Lines[Index]);
end;
Application.ProcessMessages();
if UserCancelled
then Break;
end;
finally
StartButton.Enabled:= True;
StopButton.Enabled:= False;
end;
end;
procedure TMainForm.StopButtonClick(Sender: TObject);
begin
UserCancelled:= True;
Application.ProcessMessages();
end;
З.Ы. АХТУНГ! Писал на коленке, не отлаживал!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Smiluk (статус: Посетитель), 10 июля 2010, 02:05 [#20]:
Извините что гружу сного... но можно комментарии к вашему коду? Вроде бы все понятно изложено, но.. function IsValidEMail она обязательно должна быть функцией? Просто у меня авторизация написанна в - procedure TForm1.Button1Click(Sender: TObject).
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|