Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 30.04.2017
Сообщений: 1
1

Повторяющиеся значения в Combobox

30.04.2017, 19:31. Показов 911. Ответов 4
Метки нет (Все метки)

Люди, помогите, не могу понять почему данные, которые берутся с сайта и добавляются в ComboBox повторяются хотя по идеи не должны:
Название: авп.png
Просмотров: 69

Размер: 2.1 Кб
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var
  XMLDoc:string;
  DateUpdate:Tdate;
 
function GetCursFile (const fileURL:string): string;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of char;
  BufferLen: DWORD;
  f: File;
  sAppName: String;
begin
  result:='';
  sAppName := ExtractFileName(Application.ExeName);
  hSession :=InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);
    try
      repeat
        InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
        result:=result+Buffer;
      until BufferLen = 0;
    finally
      InternetCloseHandle(hURL)
    end
  finally
    InternetCloseHandle(hSession)
  end
end;
Function CopyTextFromTeg(s:string;s1,s2:string):string;
var i1,i2:integer;
    sm:string;
begin
  i1:=pos(s1,s);
  sm:=copy(s,i1,length(s));
  i2:=pos(s2,sm)+i1-1;
  result:=copy(s,i1+length(s1),i2-i1-length(s1));
end;
Function GetKursValutFromCBRF(Valuta:STring;XMLDoc:string):Tvaluta;
var ValutaList:TstringList;
    x:integer;
    s:string;
    ValueE,nominalE:Extended; // Валюта разрядность
begin
   ValutaList:=TstringList.Create;
   ValutaList.text:=XMLDoc;
  for X:=1 to ValutaList.count-1 do
    if pos('<CharCode>'+Valuta+'</CharCode>', ValutaList[x])>0 then begin
       s:=ValutaList[x+1];
       nominalE:=StrTofloat(CopyTextFromTeg(s,'<Nominal>','</Nominal>'));
       s:=ValutaList[x+3];
       ValueE:=StrTofloat(CopyTextFromTeg(s,'<Value>','</Value>'));
       result.Value:=ValueE/nominalE;
       result.ValutaName:=Valuta;
       s:=ValutaList[x+2];
       result.FullName:=CopyTextFromTeg(s,'<Name>','</Name>');
       result.Nominal:=nominalE;
    end;
   ValutaList.free;
end;
Function GetListValuta(XMLDoc:string):String;
var x:integer;
    ValutaList:TstringList;
begin
   ValutaList:=TstringList.Create;
   ValutaList.Text:=XMLDoc;
   result:='';
   for X:=0 to ValutaList.count-1 do begin
     if pos('<CharCode>',ValutaList[x])>0 then
     result:=result+CopyTextFromTeg(ValutaList[x],'<CharCode>','</CharCode>')+#13+#10;
   end;
   ValutaList.free;
end;
Function GetUrlCBRF(date:Tdate):string;
begin
  result:='http://www.cbr.ru/scripts/XML_daily.asp?date_req='+FormatDateTime('DD/MM/YYYY',date);
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if DateUpdate<>form1.DateTimePicker1.DateTime then
    XMLDoc:=GetCursFile(GetUrlCBRF(form1.DateTimePicker1.DateTime));
    DateUpdate:=form1.DateTimePicker1.DateTime;
    edit2.Text:=floattostr(GetKursValutFromCBRF(form1.ComboBox1.Text,XMLDoc).Value);
    label4.Caption:=Floattostr(GetKursValutFromCBRF(form1.ComboBox1.Text,XMLDoc).Nominal)+'  '+GetKursValutFromCBRF(form1.ComboBox1.Text,XMLDoc).FullName;
end;
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2017, 19:31
Ответы с готовыми решениями:

Несколько Combobox-ов. После выбора значения в одном Combobox-е, оно должно стать недоступным в других
Доброго времени суток. У меня такая проблемка. Имеется 3 combobox'a ,содержащие названия городов,...

Повторяющиеся значения
Добрый день, крч если я ввожу в едит1 значение которое уже записано в базе у мну вылетает красное...

Повторяющиеся значения в двумерном массиве
Имеется двумерный массив, заполненный случайными числами, кол-во строк и столбцов вводится...

Random. Повторяющиеся первые два значения
Есть массив, по клику на кнопку выводиться случайный элемент массива посредством random'а. wtf...

4
Джоуи
1070 / 632 / 240
Регистрация: 05.05.2015
Сообщений: 3,557
Записей в блоге: 2
30.04.2017, 20:43 2
Defz, а что у Вас на сайте? Вы уверены, что
Цитата Сообщение от Defz Посмотреть сообщение
хотя по идеи не должны
?

Могу предложить код для избавления от дубликатов
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  i, j: integer;
  b: boolean = false;
begin
  ComboBox2.Items.Add(ComboBox1.Items[0]);
  for i := 0 to ComboBox1.Items.Count - 1 do
    begin
      for j := 0 to ComboBox2.Items.Count - 1
      do if ComboBox1.Items[i] = ComboBox2.Items[j]
        then b := true;
      if not b
        then ComboBox2.Items.Add(ComboBox1.Items[i]);
      b := false;
    end;
end;
0
3834 / 3266 / 857
Регистрация: 29.08.2013
Сообщений: 21,477
Записей в блоге: 2
30.04.2017, 20:45 3
Цитата Сообщение от Defz Посмотреть сообщение
Люди, помогите, не могу понять
то есть ты код написал, а отлаживать должны другие?

ставь брекпоинты и по F8 двигайся и смотри что у тебя в переменных

ЗЫ а вообще все твои валюты можно загрузить в StringList со включенным фильтром и там будут только уникальные строки
0
Эксперт Pascal/Delphi
4735 / 2714 / 841
Регистрация: 04.10.2012
Сообщений: 9,898
30.04.2017, 21:01 4
Цитата Сообщение от Defz Посмотреть сообщение
данные, которые берутся с сайта и добавляются в ComboBox повторяются
Цитата Сообщение от Joey Посмотреть сообщение
код для избавления от дубликатов
еще можно покороче. Перед добавлением прописать условие типа
Delphi
1
2
If ComboBox1.Items.IndexOf('Строка')=-1 //если строка отсутствует в списке
then ComboBox1.Items.Add('Строка'); //добавляем ее
1
Joey
30.04.2017, 21:03     Повторяющиеся значения в Combobox
  #5

Не по теме:

droider, браво, я и позабыл про IndexOf!

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2017, 21:03

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как в двух массивах находить не повторяющиеся значения?
Имеется 2 массива состоящие из записей с 2 полями типа string, как можно проверить каждое значение...

Значения ComboBox
Доброго всем времени суток, хочу сделать выпадающий список, в котором перечислены значения и...

Все повторяющиеся элементы матрицы заменить на 0,а не повторяющиеся на 1
Дана матрица размера n на m (n&gt;=5;m&gt;=5).Все повторяющиеся элементы заменить на 0,а не повторяющиеся...

Не сохраняются значения в ComboBox'e
Есть код добавления значений (Items) в ComboBox, после добавления это значение можно использовать,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.