Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2010, 19:58   #1
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
По умолчанию ошибка при добавлении елемента TListItem в TListVew

доброго времени суток! я пишу программу для тестирования, и преподаватель сказал что надо создать файл в который бы записывались все даные произошедшем тесте(названия теста, имя того кто проходил, группа, год, и т.п.) не важно кроче говоря... решил я все это дело оформить через XML... не буду лезть глубоко... собственно в чем проблема?... когда я считываю даные с файла и хочу их поместить в TListView, компилятор выдает ошибку конвертированя типов (oleStr в boolean) хотя ни тем ни тем не при передачи параметров даже пахнет, то есть пахнет и еще как но не в том месте))...
вот фрагмент кода

Код:
procedure addResultToList(list:TListView; const year: word; test_title,
  group,last_name,name:string; rating: word);
var itm: TListItem; {этот пример добавления елемента в список я нашел на этом форуме...
только немогу дать ссылку, так как не помню где, давно уже было это}

begin
  itm := list.Items.Add;
  itm.Caption := intToStr(year);
  itm.SubItems.Add(test_title);
  itm.SubItems.Add(group);
  itm.SubItems.Add(last_name);
  itm.SubItems.Add(name);
  itm.SubItems.Add(intToStr(rating));
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var od:TOpenDialog;
    fileName:string;
    i:word;
    y,r:word;
    t,g,l,n:string;
begin
  od := TOpenDialog.Create(form1);
  if od.Execute then
    if fileExists(od.FileName) then
      fileName := od.FileName;
  if isLcTestFile(fileName) then begin
    decriptXmlFile(xmlf,fileName);
    for i := 0 to xmlf.DocumentElement.ChildNodes.Count - 1 do begin
      y:=xmlf.DocumentElement.ChildNodes[i].GetAttribute(xml_year);
      t:=xmlf.DocumentElement.ChildNodes[i].GetAttribute(xml_test_title);
      g:=xmlf.DocumentElement.ChildNodes[i].GetAttribute(xml_group);
      l:=xmlf.DocumentElement.ChildNodes[i].GetAttribute(xml_last_name);
      n:=xmlf.DocumentElement.ChildNodes[i].GetAttribute(xml_name);
      r:=xmlf.DocumentElement.ChildNodes[i].GetAttribute(xml_rating);
-->   addResultToList(resultsList,y,t,g,l,n,r);{ вот на эту строчку 
указывает компилятор, все предидушие присваивания проходят идеально и все даные 
читаются с файла тоже без ошибок... выдает ошибку EVariantTypeCastError with message
'Could not convert variant of type (OleStr) into (Boolean)'...} 
    end;
  end;
end;
lowercase вне форума Ответить с цитированием
Старый 15.11.2010, 20:22   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Поставь там точку прерывания и пошаговкой выясни какие параметры пересчитываются в твои переменные.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2010, 20:48   #3
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
По умолчанию

пробовал, ошибка именно на самой передачи параметров, именно в строчке которую я выделил, так как я поставил остановку внутри
на строчку begin процедуры addResultToList, но программа не доходит до этой точки.

21:14

прошу прощения.. собственно проблемы только с моей невнимательностью... ошибка то в записи даных) то есть ошибки нет если расматривать ее со стороны компилятора... короче говоря если кому интересно вот в чем проблема:
таким образом я формирую xml-тег для последущей записи в файл
Код:
procedure crtTstrRecXML(var XMLNode: IXMLNode; Const name,last_name,group,
  test_title:string; year,rating:word);
begin
  XMLNode.SetAttribute(xml_year,year);
  XMLNode.SetAttribute(xml_name,name);
  XMLNode.SetAttribute(xml_last_name,last_name);
  XMLNode.SetAttribute(xml_group,group);
  XMLNode.SetAttribute(xml_test_title,test_title);
  XMLNode.SetAttribute(xml_rating,xml_rating);
end;
//.... тра-та-та-та... код, процедури и функции для записи в файл...
//а вот и моя проблема):
  XMLNode.SetAttribute(xml_rating,xml_rating);
xml_rating это константа, значение которой равно "rating", то есть тип string;
просто по глупости, из копи-паста(ctrl+c, ctrl+v) получил ошибку)
вот и когда я пытался конвертировать эту строку в целое число происходила ошибка)... хотя и компилятор указывал не на эту строку)

вобщем... извните... просто пишу программу уже не один час.. и мозг уже почти на автомате...)))

У нас принято пользоваться кнопочкой "Правка", дабы не плодить посты подряд, друг за другом. Это - флуд.
Читаем правила. Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Уважайте форумчан, и они ответят вам взаимностью...
Модератор

Последний раз редактировалось mihali4; 15.11.2010 в 21:16.
lowercase вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при добавлении данных в бд prizrak1390 PHP 3 29.07.2010 22:47
Ошибка при добавлении данных Ehha1234 БД в Delphi 0 19.06.2010 20:33
Ошибка при добавлении в палитру компонентов pa1n Общие вопросы C/C++ 0 09.05.2010 18:47
Ошибка при добавлении в базу Ele БД в Delphi 4 20.04.2010 13:22
Ошибка при добавлении запроса KARUSHEV Помощь студентам 3 27.01.2010 08:45