|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.11.2009, 20:15 | #1 |
Регистрация: 24.11.2009
Сообщений: 7
|
Программа из С++ в Builder
Всем привет.
Есть программа, написана на простом С++. Нужно сделать ее в билдере, т.е. чтобы появлялось окно с кнопкой и парой текстовых полей. В поле вводим строку, нажимаем на кнопку и в другом поле получаем результат. Разбирался по учебнику, получилось так, но не работает. Код:
Код:
|
24.11.2009, 21:07 | #2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Ну это вы, конечно, хорошо перенесли из консоли сразу в окошко...
Как я понимаю, тут не то открывается, не то создается файл (с файловыми потоками не работал, точно не знаю), и потом туда пишутся некие строки, одновременно выводятся в поток вывода то же самое. Итак, во первых, в билдере используются не стандартные строки std::string и не массивы символов, а AnsiString. Соответственно, эдитовские Text имеют именно этот тип. Вместо strlen используем функцию Length Код:
И объявите строку в функции Button1Click. Ну и еще, конечно же, выкиньте getch к чертовой бабушке! И лучше всего где-нибудь хоть что-то прочитать про билдер...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
24.11.2009, 21:15 | #3 | |
Регистрация: 24.11.2009
Сообщений: 7
|
Цитата:
|
|
01.12.2009, 19:09 | #4 |
Регистрация: 24.11.2009
Сообщений: 7
|
вобщем получилось вот так
Код:
structure required on left side of . or .* на строчки int i = s.Length(); и if (s.AnsiPos("one")) AnsiPos - вроде эта же функция для поиска подстроки в строке? и ошибка Lvalue в строке s = Edit1 -> Text; можете подсказать как устранить? |
01.12.2009, 19:51 | #5 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
А что за тип String такой?
Все эти Text, Caption и прочие в билдере имеют тип AnsiString, вроде бы перетащенный с дельфей. Так что: Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
01.12.2009, 20:20 | #6 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
И у Вас ошибка в коде: Код:
Код:
Код:
|
|
01.12.2009, 20:41 | #7 |
Регистрация: 24.11.2009
Сообщений: 7
|
Спасибо за помощь, 1 ошибка исчезла, но
structure required on left side of . or .* в строке int i = s.Length(); и Lvalue в строке s = Edit1 -> Text; остались От structure required on left side of . or .* избавился таким путем - int i =Text.Length(); вроде правильно А вот что за ошибка Lvalue required вобще не могу понять Последний раз редактировалось Satyrn; 01.12.2009 в 20:58. |
01.12.2009, 21:02 | #8 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
А тут дело в том, что у вас объявлен массив строк, а не одна строка длиной 20 символов. Стало быть, s - это указатель на первую строку массива. Так что просто уберите [20] - и будет вам счастье.
netrino, спасибо за информацию, записал в оперативную память.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
01.12.2009, 21:11 | #9 |
Регистрация: 24.11.2009
Сообщений: 7
|
У меня как раз дана одна строка, длинной максимум 20 символов. Мне нужно проверить, есть ли в ней слово one (и вывести в окошко) и вывести длину строки.
Кстати у меня теперь программа вообще не компилируется оО, что делать? Не правильно сперва прочитал ваше первое предложение. Теперь прочитал его правильно и не могу понять =) С компиляцией разобрался, просто создал новые проект. Исправил s[20] на s. Программа запускается, но только делает не то, что надо. Слово one не находит в строке, всегда Error выводит, но длину выводит правильно. Последний раз редактировалось Satyrn; 01.12.2009 в 21:26. |
01.12.2009, 21:28 | #10 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
String - это тип строки. Соответственно, String s; - объявление одной строки. String s[20]; - объявление массива из 20 строк.
Использование имени массива эквивалентно использованию указателя на первый элемент этого массива, поэтому в случае Код:
В общем, вам нужно всего лишь превратить массив в единственную строку путем удаления "[20]", не заморачиваясь за длину строки!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа открыается если есть другая программа. | bookkc | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 14.10.2009 20:09 |
C builder программа | Luxian | Помощь студентам | 2 | 06.10.2009 21:43 |
Перенести код из C++ Builder 5 в C++ Builder 2009 | Kreadlling | C++ Builder | 2 | 13.09.2009 14:00 |
C++ Builder!!! | kykysya | C++ Builder | 4 | 08.02.2009 03:33 |