Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 04.02.2017
Сообщений: 31
1

Функция copy с нахождением через pos

19.09.2017, 01:36. Показов 2807. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Delphi
1
FbotCC:=copy(FBbotsend, pos(('['+stri+'}'),FBbotsend)+3, pos(('{'+stri+']') , FBbotsend)-3);
подскажите в чем ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2017, 01:36
Ответы с готовыми решениями:

copy, pos
На входе имеем: RICINT10-7295-TEST Т.е. kod1 это 7295 Генерируется так: randomize;...

Copy Pos
как загрузить в переменные строки вида ip: port; , т.е например S:=ip, i:=port.

copy pos
Здравствуйте подскажите пожалуйста что не так я тут делаю procedure TForm1.Button1Click(Sender:...

Copy pos
Здравствуйте в переменной html типа string есть такой кусок ...

10
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
19.09.2017, 02:38 2
В том что вы никак не учитываете что Pos() может возвращать ошибку мол ничё не найдено?
И в том что у вас "магические константы" где ну совсем их не нада?

Добавлено через 45 секунд
Надо ТЗ подробнее. Что это за переменные такие, что в них приблизительно ожидается?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
19.09.2017, 07:50 3
Напишите пример строки и что нужно получить.
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
21.09.2017, 11:49 4
Цитата Сообщение от Puporev Посмотреть сообщение
Напишите пример строки и что нужно получить
+1.
0
12 / 10 / 5
Регистрация: 22.07.2015
Сообщений: 215
21.09.2017, 15:04 5
Цитата Сообщение от totoblabla3 Посмотреть сообщение
DelphiВыделить код
1
FbotCC:=copy(FBbotsend, pos(('['+stri+'}'),FBbotsend)+3, pos(('{'+stri+']') , FBbotsend)-3);
подскажите в чем ошибка?
Что компилятор пишет. нижнюю строку перепиши.
0
droider
21.09.2017, 15:11
  #6

Не по теме:

Цитата Сообщение от totoblabla3 Посмотреть сообщение
FbotCC
Цитата Сообщение от totoblabla3 Посмотреть сообщение
подскажите в чем ошибка?
очередной ботодрочер, который не может перевести сообщение компилятора.

0
1 / 1 / 0
Регистрация: 04.02.2017
Сообщений: 31
22.09.2017, 23:51  [ТС] 7
Ошибок нет
Все запускается
Но делается не то что мне нужно
Мне нужно что бы из некоторого массива информации поочередно вытаскивались значения
вот пример
[4}44444,wuiefhhwf [3}333333,sdfgsdgsdg [2}222222,hjklhjklhjkl [1}111111,fgjhfgjh

задача
узнать сколько всего в этом файле позиций

вытащить данные с 1 по 4
(допустим это данные пользователей)
использовать их

Перейти к следующему и сделать все тоже самое со всеми остальными

Вот кусочек из моего кода
тут я изгалялся как мог


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.......
 i:=1;
      while i <= intiTICK do
   begin
 
      
 
      assignfile(Fbott, 'Data\Log');
      reset (Fbott);
      read (Fbott,FBbotsend);
      closefile(Fbott);
      stri:='';
      str(i, stri);
 
 
      
      FbotCC:='';
      FbotCC:=copy(FBbotsend, pos(('['+stri+'}'),FBbotsend)+3, pos(('{'+stri+']') , FBbotsend)-3);
     
      VAL(stri,  i, ssssTICK);
 
      email:=copy(FbotCC, pos('}',FbotCC)+1, pos(',',FbotCC)-1);
       {log:=log+#13#10+email; }
      pass:= copy(FbotCC, pos(',',FbotCC)+1, pos('{',FbotCC));
      {log:=log+#13#10+pass; }
       Form1.Label6.caption :=log;
 
      i:=i+1;
 
end;
Вот ->
0
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,812
Записей в блоге: 3
23.09.2017, 08:19 8
Цитата Сообщение от totoblabla3 Посмотреть сообщение
допустим это данные пользователей
Для примера модифицировал приведенную строку именно с данными пользователей:
[4}Иванов,aaa@aaaaaa.aa,123 [3}Петров,bbb@bbbbbb.bb,qwe [2}Сидоров,ccc@cccccc.cc,asd [1}Афанасьев,ddd@dddddd.dd,123qweasd
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
const Src = '[4}Иванов,aaa@aaaaaa.aa,123 [3}Петров,bbb@bbbbbb.bb,qwe [2}Сидоров,ccc@cccccc.cc,asd [1}Афанасьев,ddd@dddddd.dd,123qweasd';
var L: TStringList;
    i, j: integer;
begin
 L := TStringList.Create;
 L.Delimiter := '[';
 L.DelimitedText := Src;
 for i := L.Count - 1 downto 0 do
  if Length(Trim(L.Strings[i])) = 0
   then L.Delete(i)
   else L.Strings[i] := StringReplace(L.Strings[i], '}', ',', [rfReplaceAll]);
 StringGrid1.Rows[0].CommaText := '№,Фамилия,E-Mail,Паролль';
 StringGrid1.RowCount := L.Count + StringGrid1.FixedRows;
 j := StringGrid1.FixedRows;
 for i := L.Count - 1 downto 0 do
  begin
   StringGrid1.Rows[j].CommaText := L.Strings[i];
   inc(j);
  end;
 L.Free;
end;
Миниатюры
Функция copy с нахождением через pos  
0
1 / 1 / 0
Регистрация: 04.02.2017
Сообщений: 31
23.09.2017, 23:21  [ТС] 9
Дело в том что используется не база данных делфи
а просто текстовый файл)))))

Добавлено через 34 минуты
Вот
разобрался
но все же хочется это как то покомпактнее сделать)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
......
 
i:=1;
      while i <= intiTICK do
   begin
 
      assignfile(Fbott, 'Data\Log');
      reset (Fbott);
      read (Fbott,FBbotsend);
      closefile(Fbott);
      stri:=' ';
      str(i, stri);
 
      FbotCC:='';
      FbotCC:=copy(FBbotsend, pos('['+stri+'}',FBbotsend)+3, 100000);
      delete(FbotCC,pos(' ',FbotCC)-1, 1000000);
 
      email:=FbotCC;
      pass:=FbotCC;
 
      delete(email, pos(',',email), 100000);
      delete(pass, 1 , pos(',', pass)+1);
 
      log:=log+#13#10+email;
      log:=log+#13#10+pass;
 
     Form1.Label6.caption :=log;
     VAL(stri,  i, ssssTICK);
      i:=i+1;
end;
...
0
D1973
24.09.2017, 05:56
  #10

Не по теме:

Цитата Сообщение от totoblabla3 Посмотреть сообщение
Дело в том что используется не база данных делфи
а просто текстовый файл)))))
Угу, чукча не читатель, чукча - писатель...

0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
25.09.2017, 09:08 11
Цитата Сообщение от totoblabla3 Посмотреть сообщение
используется...просто текстовый файл
А кто Вам сказал, что в примере от D1973 используется БД ? Загружайте текстовый файл, используя тот же класс TStringList, методом LoadFromFile():
Delphi
1
L.LoadFromFile(ExtractFilePath(ParamStr(0))+'имя_файла.txt'); //файл в каталоге с ПО
Далее, в цикле, построчно считывайте данные, и обрабатывайте аналогично вышеуказанному примеру.

В конце, после обработки файла, не забываем высвободить память:
Delphi
1
FreeAndNil(L);

Не по теме:

Цитата Сообщение от totoblabla3 Посмотреть сообщение
Вот разобрался
полный бред

0
25.09.2017, 09:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2017, 09:08
Помогаю со студенческими работами здесь

Pos,Copy
Пример страницы &lt;a href=&quot;http://cсылка ..1&quot;&gt; ........ &lt;a href=&quot;http://cсылка ..2&quot;&gt;......

Pos copy memo
Ребята плис знаю что много примеров но уже башка не варит совсем.. помогите сделать из...

Реализовать функции Copy и Pos
А) Выделения подстроки и заданной строки(copy) b) определения, выходит ли указанная подстрока в...

Copy/Delete/Pos/Insert etc
Доброго времени суток. Нужна помощь, так как ранее не имел работу с этими функциями, но сейчас это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru