Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
29 / 29 / 3
Регистрация: 11.02.2012
Сообщений: 339
1

Функция Nz с C++ Builder на Delphi

05.07.2017, 17:44. Показов 792. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можете помочь эту функцию перевести на Delphi?
C++
1
2
3
4
5
template <class T> Variant Nz(Variant V, T rVal)
{
 if(VarIsNull(V)) return rVal;
 else             return V;
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2017, 17:44
Ответы с готовыми решениями:

Функция C++ Builder - перевести код с Delphi
Доброго времени суток. Помогите перевести код с Delphi на C++ Buider, заранее спасибо !function...

Перевод кода из Delphi в C++ Builder / C++ Builder
Кто нибудь сможет помочь перевести проект с делфи на билдер? Выкладываю исходники на делфи. ...

Почему функция работающая в Delphi 7 не работает в Delphi 2007 и в 2009 ??
Данный код работал нормально в D7: procedure TForm1.Button1Click(Sender: TObject); begin...

Из Delphi в C++Builder
Привет всем. Помогите перевести код использования dll с Delphi в C++Builder. recognize_flac:...

5
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
05.07.2017, 18:04 2
гм... Ну примерно навскидку...
Delphi
1
2
3
4
5
6
7
function Nz<T>(var V: Variant; var rVal: T): Variant;
begin
if VarIsNull(V) then
  Result:=rVal // ??? - а как так вы хотите вместо варианта возвращать какой-то там класс?
else
  Result:=V;
end;
1
29 / 29 / 3
Регистрация: 11.02.2012
Сообщений: 339
05.07.2017, 20:22  [ТС] 3
Выскакивают такие ошибки...

Delphi
1
2
[DCC Error] MainF.pas(100): E2010 Incompatible types: 'Variant' and 'T'
[DCC Fatal Error] ADBbySen.dpr(5): F2063 Could not compile used unit 'MainF.pas'
0
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
05.07.2017, 20:48 4
А в Билдере вы это как использовали вообще?
Вот вы передаёте вариант и какой-то некий тип по желанию. Что вы хотите получить в ответ от функции?
0
29 / 29 / 3
Регистрация: 11.02.2012
Сообщений: 339
05.07.2017, 21:19  [ТС] 5
Интересно то, что в билдере работало без проблем)
Использовал я эту функцию для инкрементального поиска.
Вот пример:

C++
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
ADODataSet1->Close();
AnsiString a, b, c, d, e, f, g, h, j;
a=Nz(KD->Text,"");
b=Nz(Zak->Text,"");
c=Nz(Type->Text,"");
d=Nz(Prior->Text,"");
e=Nz(VR->Text,"");
f=Nz(Mosh->Text,"");
g=Nz(Obor->Text,"");
h=Nz(Napr->Text,"");
j=Nz(DV->Text,"");
if (KD->Text != "" || Zak->Text != "" || Type->Text != "" || Prior->Text != "" || VR->Text != "" || Mosh->Text != "" || Obor->Text != "" || Napr->Text != "" || DV->Text != "")
{
ADODataSet1->CommandText = "SELECT Двигатели.Код_двигателя, Двигатели.Код_заказчика, " \
            "Двигатели.Код_тип_ЭД, Двигатели.Приоритет, Двигатели.Вид_ремонта, " \
            "Двигатели.[Мощность, кВТ], Двигатели.[Обороты, об/мин], Двигатели.[Напряжение, В], " \
            "Двигатели.Дата_выполнения  FROM Двигатели " \
            "WHERE Код_двигателя Like '" + a + "%' And " \
            "Код_заказчика Like '" + b + "%' And " \
            "Код_тип_ЭД Like '" + c + "%' And " \
            "Приоритет Like '" + d + "%' And " \
            "Вид_ремонта Like '" + e + "%' And " \
            "[Мощность, кВТ] Like '%" + f + "%' And " \
            "[Обороты, об/мин] Like '" + g + "%' And " \
            "[Напряжение, В] Like '" + h + "%' And " \
            "Дата_выполнения Like '" + j +"%' ";
}
else
{
ADODataSet1->CommandText = "SELECT * FROM Двигатели ";
}
ADODataSet1->Open();
Добавлено через 18 минут
Все, спасибо. Сделал так:

Delphi
1
2
3
4
5
6
7
function TForm1.Nz(V: Variant; rVal: Variant): Variant;
begin
if VarIsNull(V) then
  Result:=rVal
else
  Result:=V;
end;
Добавлено через 16 секунд
0
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
05.07.2017, 21:38 6


В Си-подобных анархия приведения типов.

Zak и Prior и прочие это TEdit? А разве геттер TEdit.Text вообще может возвращать Null? И разве там Variant? Хотя Билдер я не открывал совсем давно...

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
var a, b, c, d, e, f, g, h, j: AnsiString;
begin
...
ADODataSet1.Close();
a:=Trim(KD.Text);
b:=Trim(Zak.Text);
c:=Trim(Type.Text);
d:=Trim(Prior.Text);
e:=Trim(VR.Text);
f:=Trim(Mosh.Text);
g:=Trim(Obor.Text);
h:=Trim(Napr.Text);
j:=Trim(DV.Text);
if ((Length(a)+Length(b)+Length(c)+Length(d)+Length(e)+Length(f)+Length(g)+Length(h)+Length(j))>0) then
    begin
    ADODataSet1.CommandText := ' SELECT Двигатели.Код_двигателя, Двигатели.Код_заказчика, '+
            'Двигатели.Код_тип_ЭД, Двигатели.Приоритет, Двигатели.Вид_ремонта, '+
            'Двигатели.[Мощность, кВТ], Двигатели.[Обороты, об/мин], Двигатели.[Напряжение, В], '+
            'Двигатели.Дата_выполнения  FROM Двигатели '+
            'WHERE Код_двигателя Like ' + AnsiQuotedStr( a + '%' ) + ' And ' +
            'Код_заказчика Like ' + AnsiQuotedStr( b + '%' ) + ' And ' +
            'Код_тип_ЭД Like ' + AnsiQuotedStr( c + '%' ) + ' And ' +
            'Приоритет Like ' + AnsiQuotedStr( d + '%' ) + ' And ' +
            'Вид_ремонта Like ' + AnsiQuotedStr( e + '%' ) + ' And ' +
            '[Мощность, кВТ] Like ' + AnsiQuotedStr( '%' + f + '%' ) + ' And ' +
            '[Обороты, об/мин] Like ' + AnsiQuotedStr( g + '%' ) + ' And ' +
            '[Напряжение, В] Like ' + AnsiQuotedStr( h + '%' ) + ' And ' +
            'Дата_выполнения Like ' + AnsiQuotedStr( j + '%' )+ ' ';
    end
else
    begin
    ADODataSet1.CommandText := ' SELECT * FROM Двигатели ';
    end;
ADODataSet1.Open();
...
end;
1
05.07.2017, 21:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2017, 21:38
Помогаю со студенческими работами здесь

c Delphi в Builder C++
Всем привет, кто сможет перевести на С++? unit Unit1; interface uses Windows, Messages,...

Delphi в C++ builder
Переведите этот кусок кода на Делфи в Си Билдер. Помогите кто может. unit MainUnit; interface...

Из Delphi в Builder
Доброго времени суток! Помогите пожалуйста с переводом кода из Delphi в Builder. Вот код в...

С Delphi на С++ Builder 6
Нужно перевести код написаный на Delphi в код С++ Builder 6 с этого сайта:...


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

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