Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

1C и Delphi 7   Найти похожие ветки 

 
Allizar ©   (2009-02-05 15:54) [0]

Штудирую пособие о совместной работе указанных приложений. Создал учебный пример: запускается рабочая база и считывается значения справочника. Код компилируется, но при запуске приложения и выполнении следующей процедуры выдается ошибка о несовпадении типов. Причем у автора книги приложение работает, но, когда я пытаюсь скомпилировать им же созданные файлы, компиляция не проходит из-за синтаксической ошибки. Может, его приложение написано в более старой версии? Вообщем, не знаю.

Код
Код:

procedure TForm1.Button2Click(Sender: TObject);
var OleSklad: OleVariant;
begin OleSklad:=Unassigned;
ListBox1.Items.Clear;
if not VarIsEmpty(Ole1C) then begin OleSklad:=Ole1C.CreateObject("Справочник."+Edit3.Text);
if not VarIsEmpty(OleSklad) then begin
if OleSklad.ВыбратьЭлементы()>0 then begin
while OleSklad.ПолучитьЭлемент()>0 do begin ListBox1.Items.Add(Trim(OleSklad.Код)+" "+Trim(OleSklad.Наименование)); Application.ProcessMessages;
end;
end;
end;
end;
OleSklad:=Unassigned;
end;


 
Сергей М. ©   (2009-02-05 15:57) [1]


> выдается ошибка о несовпадении типов


На какой строчке ?


 
Сергей М. ©   (2009-02-05 15:59) [2]


> я пытаюсь скомпилировать им же созданные файлы, компиляция
> не проходит из-за синтаксической ошибки. Может, его приложение
> написано в более старой версии? Вообщем, не знаю


И не узнаешь никогда - ты же даже не почесался выяснить причину


 
Jeer ©   (2009-02-05 16:21) [3]


> Причем у автора книги приложение работает,


Вот к нему и вопросы.


 
tesseract ©   (2009-02-05 16:22) [4]

У тебя tStringList  - ANSI строка, а 1С возвращает WideString (в XP по крайней мере под 98 не смотрел).


 
Anatoly Podgoretsky ©   (2009-02-05 16:23) [5]


> И не узнаешь никогда - ты же даже не почесался выяснить
> причину

И пусть радуется, а вот когда испортит базу, то будет не до радости.


 
Anatoly Podgoretsky ©   (2009-02-05 16:28) [6]

> Jeer  (05.02.2009 16:21:03)  [3]

У Архангельского тоже потоки работаю, но сколько горя у читателей.


 
Anatoly Podgoretsky ©   (2009-02-05 16:34) [7]

Это не может компилировать в Д7 - русские буквы в идентификаторах недопустимы.


 
Сергей М. ©   (2009-02-05 16:38) [8]


> Anatoly Podgoretsky ©   (05.02.09 16:34) [7]


Это-то как раз будет успешно скомпилировано.

А вот что там у автора книги творится - одним авторам (книги и этого топика) только и известно.


 
Allizar ©   (2009-02-05 16:40) [9]

>И пусть радуется, а вот когда испортит базу, то будет не до радости.
Я работаю с копией.
>Это не может компилировать в Д7 - русские буквы в идентификаторах недопустимы.
Код компилируется. А вот приложение не работает.


 
tesseract ©   (2009-02-05 16:43) [10]


> Это не может компилировать в Д7 - русские буквы в идентификаторах
> недопустимы.


И компилируется и работает под XP. Где-то у меня был пример перебора метаданных в D7. Там всё равно выходит скрытый вызов iDispatch - а ему сугубо побарабану какие там символы.


 
Сергей М. ©   (2009-02-05 16:45) [11]


> Allizar ©   (05.02.09 16:40) [9]


> А вот приложение не работает


Это мы уже поняли и охотно верим. Долго ты еще будешь нас в этом убеждать ?)

На вопрос в [1] когда сподобишься ответить ?


 
Allizar ©   (2009-02-05 16:52) [12]

>На вопрос в [1] когда сподобишься ответить ?

На строчке:

if OleSklad.ВыбратьЭлементы()>0 then begin


 
Сергей М. ©   (2009-02-05 17:08) [13]


> Allizar ©   (05.02.09 16:52) [12]


А так

OleSklad.ВыбратьЭлементы(0); // <--
while OleSklad.ПолучитьЭлемент()>0 do
..

?


 
Сергей М. ©   (2009-02-05 17:13) [14]

Вообще процитируй сюда фрагмент стандартной одноэсной справки к методу ВыбратьЭлементы..

У меня нет под рукой одноэсины, гадать нет желания


 
tesseract ©   (2009-02-05 17:19) [15]


> У меня нет под рукой одноэсины, гадать нет желания


Там по умолчанию значение. Насколько я помню вызывать такие функции желательно не напрямую, а через EvalExpr.


 
Allizar ©   (2009-02-05 17:23) [16]


> А так
>
> OleSklad.ВыбратьЭлементы(0); // <--
> while OleSklad.ПолучитьЭлемент()>0 do
> ..
>
> ?


Получилось!!!Ну и OleSklad.ПолучитьЭлемент(0) вместо соответствующей строчки.
Спасибо!!!



Страницы: 1 вся ветка

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
1-1208160423
incm
2008-04-14 12:07
2009.03.29
Как в TreeView убрать у итемсов пустое место для картинки


4-1207397488
Дмитрий
2008-04-05 16:11
2009.03.29
Проблема с реестром (просто)


15-1233322041
Кто б сомневался
2009-01-30 16:27
2009.03.29
Функции сравнения строк, почему не так?


15-1231814498
Kerk
2009-01-13 05:41
2009.03.29
Медицина


8-1192042116
Shaitan
2007-10-10 22:48
2009.03.29
Эквалайзер-это утопия