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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2008, 21:23   #1
chipset
 
Регистрация: 10.02.2008
Сообщений: 4
Радость Тема AnsiString не раскрыта=)

Решил освоить формы..раньше юзал только смд! Ситуация такова, на форме расположенны пять элементов Edit1, Label1, Label2, Label3, Button1:
Edit1 //ввод слов
Label1 //вывод количества встречаемых букв
Label2 //вывод всей суммы букв
Label3 //частота букв
В Button1 лежит следующий код:

Код:
double search(char *str, double size, char ch){
for(int i=0;i<size;i++)
if(str[i] == ch) return i;
return -1;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
char alpha[] = "абвгджзийклмнопрстуфхцчшщъыьэюя";
double*counters = new double [strlen(alpha)];

for(int i=0;i<strlen(alpha);i++)
counters[i] = 0;

int i,k,pos,ch;
double sum;
float f;

AnsiString cha=ch;
cha= Edit1->Text;

pos = search(alpha,strlen(alpha),ch);
if(pos>=0) counters[pos]++;

for(i=0;i<strlen(alpha);i++){
Label1->Caption=String(alpha[i])+"="+ String(counters[i]);
}
for(k=0,sum=0;k<strlen(alpha);k++){
sum+=counters[k];
}
Label2->Caption=String (sum);
Label3->Caption="a="+String (counters[0]/sum)+"; б="+(counters[1]/sum);
}
встретил проблему с ансистрингом, тут и стала программа..
кто знает пути обхода ансистринга?..

ЗЫ: Билдер 6.0..
chipset вне форума Ответить с цитированием
Старый 21.02.2008, 11:20   #2
chipset
 
Регистрация: 10.02.2008
Сообщений: 4
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Очень смешно. То есть, всем нужно догадаться, что там за проблема и куда надо обходить ансистринг? Тогда ждите, может кто и угадает.
мне нужно чтоб мне обьяснили/закрепили на примере..возьмем самый елементарный пример..ввод в Edit1 и вывод вLabel1, букавок..


Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i;
char *ch;
AnsiString cha;
cha.printf("%i", ch);
cha= Edit1->Text;

for(i=0;i<strlen(ch);i++){
Label1->Caption=cha[i];
}
delete (ch);
}

чего этот код не работает?..
chipset вне форума Ответить с цитированием
Старый 21.02.2008, 11:45   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

А с чего он должен заработать? Я вообще не понимаю, чего Вы там сделать пытаетесь. Зачем писать в консоль в целом виде нечто, находящееся по неинициализированному указателю, пытаться взять длину какой-то несуществующей строки, каким-то образом освобождать память по указателю, который указывает в никуда... Что это, вообще?
B_N вне форума Ответить с цитированием
Старый 21.02.2008, 21:38   #4
chipset
 
Регистрация: 10.02.2008
Сообщений: 4
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
А с чего он должен заработать? Я вообще не понимаю, чего Вы там сделать пытаетесь. Зачем писать в консоль в целом виде нечто, находящееся по неинициализированному указателю, пытаться взять длину какой-то несуществующей строки, каким-то образом освобождать память по указателю, который указывает в никуда... Что это, вообще?
мне подсказали..вот я исправил!..теперь точно разобрались!=)..
Код:
double search(char *str, double size, AnsiString ch){
for(int i=0;i<size;i++)
if(str[i] == ch) return i;
return -1;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString ch,alpha = "абвгджзийклмнопрстуфхцчшщъыьэюя";
 char * alpha2 = alpha.c_str();
double*counters = new double [alpha.Length()];

for(int i=0;i<alpha.Length();i++){
counters[i] = 0;  }

int i,k,pos;
double sum;
ch =Edit1->Text.c_str();
pos = search (alpha,alpha.Length(),ch);
if(pos>=0) counters[pos]++;

for(i=0;i<alpha.Length();i++){
Label1->Caption = Label1->Caption + AnsiString(alpha[i])+"="+ AnsiString(counters[i]);
 }
 }
пишет => 'Could not convert variant of type (String) into type (Double)'
ктознает?..

Последний раз редактировалось chipset; 21.02.2008 в 22:51.
chipset вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из AnsiString в Char[] juden Общие вопросы C/C++ 6 20.05.2008 22:49
Как обьявить переменную типа AnsiString глобально Kocapb Общие вопросы C/C++ 6 19.12.2007 05:05
простая тема! Алёна БД в Delphi 17 03.05.2007 13:43
очередня тема :) latent Общие вопросы Delphi 7 17.11.2006 16:04
первая тема execom Софт 1 29.10.2006 01:15