Cristian Опубликовано 11 декабря, 2009 Жалоба Поделиться Опубликовано 11 декабря, 2009 Lakers scanf разве строки считывает ? Я чет никогда не слыхал...Да и проблемма не в этом с функцией считывания я разобрался, но ошибку странную выдает Вижуал студио: cannot convert parameter 1 from 'char' to 'const char *' догнать не могу что я не так сделал. Ссылка на комментарий
Lakers Опубликовано 11 декабря, 2009 Жалоба Поделиться Опубликовано 11 декабря, 2009 Cristianсчитывает если написать scanf("%s",&C).на какой строке эта ошибка? Ссылка на комментарий
CooDi Опубликовано 11 декабря, 2009 Жалоба Поделиться Опубликовано 11 декабря, 2009 Cristianв том что ты написал strlen работать не будет, т.к. параметр должен быть типа char*, а не просто char. От отго ошибка и вылазит.Добавлено спустя 1 минуту 26 секунд:напиши strlen(&C) тогда уж.Добавлено спустя 24 секунды:Хотя тоже работать правильно не будет, зато ошибка пропадет Ссылка на комментарий
0xDEADBEEF Опубликовано 11 декабря, 2009 Жалоба Поделиться Опубликовано 11 декабря, 2009 Lakers, CooDiС имеет тип char[100] или char* , что равносильно. Ошибки здесь нет Ссылка на комментарий
CooDi Опубликовано 11 декабря, 2009 Жалоба Поделиться Опубликовано 11 декабря, 2009 0xDEADBEEFты не туда смотришь, Cristian написал просто char C; Ссылка на комментарий
Cristian Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 В чем проблемма ? У меня после gets(X) как я только хочу ввести строку, нажимаю и прога закрывается. В тексте показано это место <<<<<#include "stdafx.h"#include "string.h"#include "math.h"#include int main(){ char C[28]="_abcdefghijklmnopqrstuvwxyz"; int D[28]={0,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}; int Q[1000]; int A[100][100]; // Вводимая матрица. char X[1000]; // Кодируемая строка. int B[100][100]; // Шифрованый текст через номера. int S[100][100]; int i,j,k,a,p=0,n; printf("Vveditdffdde razmernost matrici A: "); scanf("%i",&n); // ввод размерности квадратной матрицы А. for(i=0;i { for(j=0;j { printf("Vvedite element matrici A[%i][%i]:",i,j); scanf("%i",&A[j]); // ввод матрицы А. } } printf("Vvedite frazu dla shifrovki: "); gets(X); <<<<<<<<<< a=(strlen(X) % n); if(a==0) { for(i=0;i { for(j=0;j<27;j++) { if(X==C[j]) Q=D[j]; } } k=strlen(X)/n; //определение количества строк for(i=0;i { for(j=0;j { S[j]=Q[p];p++; //заполнение матрицы S, номерами из матр. Q. } } for(i=0;i { for(j=0;j { if(j==(k-1)) { printf(" %i \n",S[j]); } else printf(" %i ",S[j]); } } } else {printf("Vi vveli necorrektnyu frazu");} getch(); return 0;}}PS: Когда я использую вместо gets() ,scanf() то все работает, вот только scanf() не читает пробелы в строке, поэтому вместо пробела пришлось использовать '_'. Ссылка на комментарий
Lakers Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 у меня в паскале как то раз (при создании этой же программы для шифровки текста, еще на первом курсе) тоже не вводился текст после косанды WRITELN. так и тут следующий оператор ввода после команды printf("Vvedite frazu dla shifrovki: "); не используется. если написатьgets(X);gets(X); всё начинает работать.P.S. строки которые не делятся нацело на n тоже по идеи кодируются.Добавлено спустя 6 минут 36 секунд:еще скобка в конце лишняя одна.Добавлено спустя 3 минуты 26 секунд:а может это и не изза оператора printf("Vvedite frazu dla shifrovki: "); а изза того что ты вводиш числа, а после ввода в буфере остаётся он то и считывается первой командой gets(X) Ссылка на комментарий
Ksander Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 Обьесните пожалуйста что делают функции putchar() и getchar(), и ещё не понял что делают такие символы "%" (они в printf) ? *09И вобще чем отличаються cout и printf? Ссылка на комментарий
CooDi Опубликовано 20 декабря, 2009 Жалоба Поделиться Опубликовано 20 декабря, 2009 Ksandergetchar считывает символ и и putchar печатаетПользуйся cout и не парься. printf - это пережитки чистого С Ссылка на комментарий
Cristian Опубликовано 21 декабря, 2009 Жалоба Поделиться Опубликовано 21 декабря, 2009 Lakers действительно gets надо было поставить просто раньше.... Ссылка на комментарий
Ksander Опубликовано 22 декабря, 2009 Жалоба Поделиться Опубликовано 22 декабря, 2009 Ksandergetchar считывает символ и и putchar печатаетПользуйся cout и не парься. printf - это пережитки чистого С Можно поподробнее нащёт getchar и putchar Ссылка на комментарий
JSTQ Опубликовано 22 декабря, 2009 Жалоба Поделиться Опубликовано 22 декабря, 2009 Ksandergetchar считывает символ и и putchar печатаетПользуйся cout и не парься. printf - это пережитки чистого С Можно поподробнее нащёт getchar и putchar *16getcharputchar Ссылка на комментарий
Vanix Опубликовано 22 декабря, 2009 Жалоба Поделиться Опубликовано 22 декабря, 2009 Вообщем проблемка, господа, причем причина вообще непонятна, возможно это конечно C Builder 6 тупит,но мб это все таки моя ошибка.Вот собственно и сама проблема: без левой ансистринговской переменной Tmp, не конвертируется из Char в AnsiString в строке (Res->printf("%s",Buf); ), причем Tmp !!!АБСОЛЮТНО!!! нигде не используетсяЧто бы проверить нужно создать проект кинуть туда один едит и один баттон, ну и код ессно скопироватьconst AnsiString Gamma = "1273784";AnsiString TForm1::Coding(AnsiString Str){ AnsiString *Res, Tmp; unsigned char Buf[100]; for(int i = 0; i < 100; i++){ Buf[i] = 0; } unsigned char *PBuf = NULL; PBuf = Str.c_str(); short i = 1; for(short j = 0;j < Str.Length(); j++){ Buf[j] = (char)((int)PBuf[j]^StrToInt(Gamma[i])); i++; if(i > Gamma.Length()){ i = 1; } } PBuf = '\0'; Res->printf("%s",Buf); return *Res;}void __fastcall TForm1::Button1Click(TObject *Sender){ Edit1->Text = Coding(Edit1->Text);} Ссылка на комментарий
JSTQ Опубликовано 19 апреля, 2010 Жалоба Поделиться Опубликовано 19 апреля, 2010 Как сделать картинку фоном формы? Желательно *.jpg или *.png (поддержка альфа-канала приветствуктся, хотя необязательно)Пытаюсь такGraph->LoadFromFile("pic1.bmp");Form1->Canvas->Draw(0,0,Graph);гдеTGraphic* Graph;Ругается на первую строчку уже после компиляцииЕсли нажать Continue, по после еще одной ошибкипрограмма запускается, но фон дефолтный. Файл лежит в папке с проектом. Ссылка на комментарий
Lakers Опубликовано 19 апреля, 2010 Жалоба Поделиться Опубликовано 19 апреля, 2010 память под Graph точно выделена?Graphics::TBitmap * Bitmap = new Graphics::TBitmap;TJPEGImage * examp = new TJPEGImage;examp->LoadFromFile("test.jpg");Bitmap->Assign(examp);Canvas->Draw(10,10,Bitmap);delete examp;#include Ссылка на комментарий
coder Опубликовано 19 апреля, 2010 Жалоба Поделиться Опубликовано 19 апреля, 2010 Justiceа кто создаст "объект"?собственно AV об этом и напоминает.поддержка альфа-канала приветствуктсяэто как ? т.е. если альфой сделан круг, то и форма должна быть круглой или за альфой просвечивается "фон" формы ? Ссылка на комментарий
JSTQ Опубликовано 19 апреля, 2010 Жалоба Поделиться Опубликовано 19 апреля, 2010 #include Graphics::TBitmap * Bitmap = new Graphics::TBitmap;TJPEGImage * examp = new TJPEGImage;examp->LoadFromFile("test.jpg");Bitmap->Assign(examp);Canvas->Draw(10,10,Bitmap);delete examp;Сделал так, картинка там где надо, но фон не поменялсяа кто создаст "объект"?собственно AV об этом и напоминает.Ниче не понялэто как ? т.е. если альфой сделан круг, то и форма должна быть круглойЧто-то типа того. Ссылка на комментарий
Lakers Опубликовано 19 апреля, 2010 Жалоба Поделиться Опубликовано 19 апреля, 2010 AV-access violation Ссылка на комментарий
прохожий Опубликовано 20 апреля, 2010 Жалоба Поделиться Опубликовано 20 апреля, 2010 Что-то типа того.не, это совсем другое чем "типо того".тут draw на "форму" не решает.начинай смотретьSetWindowRgn и далее от фантазии и прочих факторов. Ссылка на комментарий
JSTQ Опубликовано 19 мая, 2010 Жалоба Поделиться Опубликовано 19 мая, 2010 void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State){TStringGrid *Box= ((TStringGrid*)Sender);TCanvas *ACanvas=Box->Canvas; ACanvas->Brush->Color=clWhite; ACanvas->FillRect(Rect); ACanvas->Brush->Style=bsClear; ACanvas->Font->Color=clBlack; char ch; wchar_t wch=DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; //MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, &ch, 1, &wch, 1); int q=1; WideCharToMultiByte(CP_ACP, MB_PRECOMPOSED, &wch, 1, &ch, 1, &ch, &q); DrawText(ACanvas->Handle,Box->Cells[ACol][ARow].c_str(),Box->Cells[ACol][ARow].Length(), &Rect, ch); ACanvas->Brush->Style=bsSolid;}В DrawText - ошибка конвертации 'wchar_t *' в 'const char *' (хотя ch - char) + несоответствие типов 'IpchText' (хотел 'const char *', получил 'wchar_t'). Я вроде нормально конвертнул wchar_t в char... что не так? Ссылка на комментарий
CooDi Опубликовано 19 мая, 2010 Жалоба Поделиться Опубликовано 19 мая, 2010 char - это один символ, а не строка. Ссылка на комментарий
JSTQ Опубликовано 19 мая, 2010 Жалоба Поделиться Опубликовано 19 мая, 2010 Ну дак... как сделать чтобы в константе типа const char* хранилось DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS и при этом дурацкая функция не ругалась? const char z=DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; DrawText(ACanvas->Handle,Box->Cells[ACol][ARow].c_str(),Box->Cells[ACol][ARow].Length(), &Rect, z);const char *z=DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; DrawText(ACanvas->Handle,Box->Cells[ACol][ARow].c_str(),Box->Cells[ACol][ARow].Length(), &Rect, z);const char z=DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; DrawText(ACanvas->Handle,Box->Cells[ACol][ARow].c_str(),Box->Cells[ACol][ARow].Length(), &Rect, &z);тоже самоеint WideCharToMultiByte( UINT CodePage, // кодовая страница DWORD dwFlags, // флаги LPCWSTR lpWideCharStr, // адрес на wide-character строку int cchWideChar, // количество символов в строке LPSTR lpMultiByteStr, // адрес на буфер для новой строки int cchMultiByte, // резмер буфера LPCSTR lpDefaultChar, // параметры, которые применяются при LPBOOL lpUsedDefaultChar // обработке неправильных символов );С вызовом типа WideCharToMultiByte(CP_ACP, WC_DEFAULTCHAR, &wch, 50, &ch, 50, NULL, NULL); все та же ошибка Ссылка на комментарий
CooDi Опубликовано 19 мая, 2010 Жалоба Поделиться Опубликовано 19 мая, 2010 создай переменную типа char*, а не char, а лучше char[] - все равно длина практически известна и не меняется. Ссылка на комментарий
JSTQ Опубликовано 19 мая, 2010 Жалоба Поделиться Опубликовано 19 мая, 2010 char* z="DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS"; DrawText(ACanvas->Handle,Box->Cells[ACol][ARow].c_str(),Box->Cells[ACol][ARow].Length(),&Rect, z); char z[]="DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS"; DrawText(ACanvas->Handle,Box->Cells[ACol][ARow].c_str(),Box->Cells[ACol][ARow].Length(),&Rect, z);Такая же ошибкаЕсли без кавычек - Cannot convert int to char [] Ссылка на комментарий
CooDi Опубликовано 19 мая, 2010 Жалоба Поделиться Опубликовано 19 мая, 2010 function DrawText(DC: HDC; Str: PChar; Count: Integer; var Rect: TRect; Format: Word): Integer;Рисует фоpматиpованный текст. Тип фоpматиpования указывается паpаметpом Format. Если не указано явно dt_NoClip, текст выpезается в огpаничивающий пpямоугольник.ПаpаметpыDC: Идентификатоp контекста устpойства.Str: Рисуемая стpока. Если Count=-1, то должна заканчиваться пустым символом.Rect: TRect, огpаничивающий текст.Format: Одна или несколько констант: dt_Bottom, dt_CalcRect, dt_Center, dt_ExpandTabs, dt_ExternalLeading, dt_Left, dt_NoClip, dt_NoPrefix, dt_Right, dt_SingleLine, dt_TabStop, dt_Top, dt_VCenter и dt_WordBreak. См. pаздел "Флаги фоpматиpования текста пpи pисовании, dt_" в главе 1.Возвpащаемое значениеВысота текста.Добавлено спустя 16 секунд:почитай и сравни. Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти