Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перевести на С++ / 25 сообщений из 25, страница 1 из 1
21.09.2004, 14:39
    #32704379
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
как этот код на паскале должен выглядеть в С ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TForm1.frxReport1BeforePrint(c: TfrxReportComponent);
var
  Cross: TfrxCrossView;
  i, j: Integer;
begin
  if c is TfrxCrossView then
  begin
    Cross := TfrxCrossView(c);
    for i :=  1  to  16  do
      for j :=  1  to  16  do
        Cross.AddValue([i], [j], [StringGrid1.Cells[i -  1 , j -  1 ]]);
  end;
end;
...
Рейтинг: 0 / 0
21.09.2004, 15:01
    #32704466
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
Хрен знает может так ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void TForm1::frxReport1BeforePrint(TfrxReportComponent * c)
{

   TfrxCrossView * Cross = new  TfrxCrossView(NULL) ;

    Cross = (TfrxCrossView *) c;
    for (int i =  1  ;i<= 16 ;i++)
      for (int j =  1 ;j<= 16 ;j++)
       {
          Cross->AddValue(i, j, StringGrid1->Cells[i -  1 ][j -  1 ]);
       }
  }
}




 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
21.09.2004, 17:18
    #32704865
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
а зачем
Код: plaintext
TfrxCrossView * Cross = new  TfrxCrossView(NULL) ;
?
кажется так будет лучше:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void TForm1::frxReport1BeforePrint(TfrxReportComponent * c)
{
  TfrxCrossView * Cross =(TfrxCrossView *) c;
  for (int i =  1  ;i<= 16 ;i++)
    for (int j =  1 ;j<= 16 ;j++)
    {
      Cross->AddValue(i, j, StringGrid1->Cells[i -  1 ][j -  1 ]);
     }
}
...
Рейтинг: 0 / 0
21.09.2004, 18:06
    #32705030
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
нет эти варианты не катят в принципе
в run-time приложение ругается на изнасилованый доступ :-/
для сравнения т.е. в обоих вариантах было пропущено
Код: plaintext
1.
if c is TfrxCrossView then

я использую
Код: plaintext
1.
2.
3.
TfrxCrossView* Cross;
AnsiString s=c->ClassName();
    if(s == "TfrxCrossView")

но все равно гдето что-то ни так :-/
пошел ловить крышу
зы
еще и сервак кто-то нипадецки долбит
...
Рейтинг: 0 / 0
21.09.2004, 18:31
    #32705097
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
procedure TForm1::frxReport1BeforePrint(TfrxReportComponent *c)
{
  TfrxCrossView *Cross = dynamic_cast<TfrxCrossView *>c;
  for(int=  1 ; c && i <= 6 ; i++)
    for(int j=  1 ; j <=  16 ; i++)
      Cross->AddValue([i], [j], [StringGrid1->Cells[i -  1 , j -  1 ]]);
}
...
Рейтинг: 0 / 0
21.09.2004, 18:38
    #32705112
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
2 Lepsik

Результат приведения с помощью dynamic_cast-а проверить на 0 не помешает:

Код: plaintext
1.
2.
3.
4.
TfrxCrossView *Cross = dynamic_cast<TfrxCrossView *>c;
if(  Cross )
{ 
      // ok, Cross is pointer to TfrxCrossView... 
}
...
Рейтинг: 0 / 0
21.09.2004, 18:39
    #32705114
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
Код: plaintext
 Cross->AddValue([i], [j], [StringGrid1->Cells[i -  1 , j -  1 ]]
а это недопустимый синтаксис даже проверять не буду
...
Рейтинг: 0 / 0
21.09.2004, 18:40
    #32705117
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
Анатолий Широков
Результат приведения с помощью dynamic_cast-а проверить на 0 не помешает:


с этим никто не спорит суть вопроса ни в этом :)
...
Рейтинг: 0 / 0
22.09.2004, 09:49
    #32705577
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
БурыйТина
Код: plaintext
 Cross->AddValue([i], [j], [StringGrid1->Cells[i -  1 , j -  1 ]]
а это недопустимый синтаксис даже проверять не буду

Ну дык а мы то откуда знаем тогда ??

AddValue какие там параметры , каких типов итд.
...
Рейтинг: 0 / 0
22.09.2004, 10:25
    #32705694
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
Код на паскале взят из поставки фаст репорта из ихних примеров

описание AddValue в заголовочном файле выглядит вот так
Код: plaintext
1.
2.
void __fastcall AddValue(const Variant * Rows, const int Rows_Size, const Variant * Columns, const
int Columns_Size, const Variant * Cells, const int Cells_Size);

тут передается 6 параметров, в примере только 3

вчера остановился на таком виде обработчика
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
TfrxCrossView* Cross;
AnsiString s=c->ClassName();
    if(s == "TfrxCrossView")
    for (int i =  1  ;i<= 16 ;i++)
      for (int j =  1 ;j<= 16 ;j++)
       {
            Cross->AddValue((const Variant*) &i,
             10 ,
            (const Variant*) &j,
             10 ,
            (const Variant*) &("Строка текста"),
             20 
            );

       }
при компиляции ошибок не возникает
при выполнении этого кода вызникает исключение
изнасилованый доступ
я так и не могу понять что за объект должен содержаться в том адресе куда программа пытается обратиться TfrxCrossView невизуальный объект он присутствует на форме поэтому я не использую оператор new
крышу так и не поймал :)
...
Рейтинг: 0 / 0
22.09.2004, 11:02
    #32705822
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
Хмм скорее с размерами у тя пробема
ну попробуй так

Код: plaintext
1.
2.
3.
4.
Variant v = i;
Variant v1 = j;
Variant v2 = StringGrid1->Cells[i -  1 ][j -  1 ];
Cross->AddValue(&v,sizeof(v),&v1,sizeof(v1),&v2,sizeo(v2));

и еще , а гиде инициализация переменнной ?

Код: plaintext
1.
  TfrxCrossView* Cross;



 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
22.09.2004, 11:05
    #32705830
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
хотя sizeof(v), вообще с вариантами похоже не катит
что то я попробовал а он мне всегда возращает 16 :)



 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
22.09.2004, 11:39
    #32705945
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
//и еще , а гиде инициализация переменнной ?
Она инициализирована атвичаю


но твой вариант все равно не катит в отладчике вижу что обработчик принял первые 3 параметра а на 4-м получается затык, в адресе где он должен находиться болт т.е. там ничего нет попробовал еще вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
int pRows[ 1 ],pCols[ 1 ];
AnsiString pStrs[ 1 ];
....
            pRows[ 0 ] = i;
            pCols[ 0 ] = j;
            pStrs[ 0 ] = "??????? ????";
....
           Cross->AddValue((const Variant*)pRows,
             1 ,
            (const Variant*) pCols,
             1 ,
            (const Variant*) pStrs,
             1 
            );
тоже болт тоже на четвертом параметре
в отладчике вижу что TfrxCustomCrossView::AddValue(...)
обрабатывается и останавливается именно на 4-м параметре
а ему и требуются 4 параметра нах в описании еще 2 не знаю
...
Рейтинг: 0 / 0
22.09.2004, 12:36
    #32706123
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
ну как нах не нужно ,
у тебя три вариантных типа ,
вот передал что то и размер типа передай :))


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
22.09.2004, 16:02
    #32706911
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
делал ни памагает :/
люди йа дурак ?
...
Рейтинг: 0 / 0
22.09.2004, 16:22
    #32706982
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
БурыйТинаделал ни памагает :/
люди йа дурак ?

Да и не только

я чето тоже ничерта вникнуть не могу как с этой бодягой разобраться .
...
Рейтинг: 0 / 0
22.09.2004, 18:33
    #32707384
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
2Анатолий Широков
--Результат приведения с помощью dynamic_cast-а проверить на 0 не помешает:

а если внимательно присмотреться ?
Код: plaintext
1.
  for(int=  1 ; c && i <= 6 ; i++)
...
Рейтинг: 0 / 0
22.09.2004, 19:45
    #32707514
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
ВСЕ РАЗОБРАЛСЯ
если кому интересно
Код: plaintext
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.
void __fastcall Tshet_faktura::frxReport1BeforePrint(
      TfrxReportComponent *c)
{
TfrxCrossView* Cross;

 //AnsiString pStrs[1]; 
 //int pRows[1],pCols[1]; 
AnsiString s=c->ClassName();
 //Variant vInteger(4); 

    if(s == "TfrxCrossView")
    {
      Cross = (TfrxCrossView*)c;
      for (int i =  1  ;i<= 16 ;i++)
      {
        for (int j =  1 ;j<= 16 ;j++)
        {

            Variant pRows[] = {i};
            Variant pCols[] = {j};
            Variant pStrs[] = {"12345"};
            int nSize = ARRAYSIZE(pStrs);
            Caption = IntToStr(nSize);
            Cross->AddValue((const Variant*)pRows,ARRAYSIZE(pRows)- 1 ,
            (const Variant*)pCols,ARRAYSIZE(pCols)- 1 ,
            (const Variant*)pStrs,ARRAYSIZE(pStrs)- 1 );
        }
      }
    }
}

сыро но это то что у меня только что заработало :)
...
Рейтинг: 0 / 0
22.09.2004, 20:35
    #32707566
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
продолжение блин
может у меня совсем крышу снесло
но когда я передаю буквы любые русские англицкие, а не цифры то получаю исключение Invalid Variant Type conversion
Где грабли ?
...
Рейтинг: 0 / 0
23.09.2004, 09:15
    #32707812
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
а нафиг это нужно приведение типов (const Variant*) ??


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
23.09.2004, 09:49
    #32707858
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
2 JibSkeart
Это осталось от отладки, если убираю приведение типов все равно передаются только цифры никакая буква ни русская ни англицкая не передается :/
...
Рейтинг: 0 / 0
23.09.2004, 23:39
    #32709504
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
разъибался
----------------------
прастите
не у держался

...
Рейтинг: 0 / 0
24.09.2004, 10:12
    #32709768
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
БурыйТинаразъибался
----------------------
прастите
не у держался



И че было ?!!
...
Рейтинг: 0 / 0
24.09.2004, 19:07
    #32711178
БурыйТина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
2 JibSkeart
отчет в форме пытался вычислять значения ячеек ячейки
у него это по умолчанию встает
вот такая фигня

Дарова кстати :)

скора 6666

...
Рейтинг: 0 / 0
25.09.2004, 11:32
    #32711452
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести на С++
БурыйТина2 JibSkeart
отчет в форме пытался вычислять значения ячеек ячейки
у него это по умолчанию встает
вот такая фигня

Дарова кстати :)

скора 6666



Дорово :)

точно скоро 6666
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перевести на С++ / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]