Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
5 / 5 / 4
Регистрация: 09.05.2010
Сообщений: 76

ТЕКСТ: С Edit'a в масив и обратно в EDIT

09.05.2010, 21:01. Показов 2952. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот у меня задание (сам себе захотел научиться) но так и не научился (
зхотел ТЕКСТ перевести в масив (чтобы потом работать с елементами отдельно) и вывести в ЕДИТ2 новый текст...

написал програмку код вроде компилировался последний раз но вибивает ошибку когда на кнопку жму (((
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *mass = new char [Edit1->Text.Length()];
for(int i=0; i<Edit1->Text.Length();i++)
        mass[i]=Edit1->Text[i];
for(i=0; i<Edit2->Text.Length();i++)
        Edit2->Text[i]=mass[i];
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.05.2010, 21:01
Ответы с готовыми решениями:

Компонент унаследованный от Panel, в нем Edit. как прописать свойство позволяющее изменять цвет и шрифт Edita?
Компонент унаследованный от Panel, в нем FEdit. как прописать свойство позволяющее изменять цвет и шрифт FEdit? type TDataType =...

Поменять местами столбцы в стринггриде считав масив и внеся его обратно
Всем привет! Ну мастера помогайте =) Для двумерного массива размерностью 2 строки 4столбца поменять местами первый и последний...

Дано одновимірний масив, розміром 10 елементів. Заповнити масив значеннями з клавіатури та виведіть масив на екран в прямому та зворотньому порядку.
1.Дано одновимірний масив, розміром 10 елементів. Заповнити масив значеннями з клавіатури та виведіть масив на екран в прямому та...

18
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
09.05.2010, 21:14
Правильно, потому что теорию надо знать, у тебя i=0, а символы в строке начинают нумероваться с единицы )))
0
5 / 5 / 4
Регистрация: 09.05.2010
Сообщений: 76
09.05.2010, 21:34  [ТС]
все равно не работает.. мож сам код отстой ?
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
09.05.2010, 23:22
C++
1
2
3
4
5
6
char *mass = new char [Edit1->Text.Length()];
for(int i=1; i<Edit1->Text.Length();i++)
        mass[i]=Edit1->Text[i];
        Edit2->Text="";
for(int i=1; i<Edit1->Text.Length();i++)
        Edit2->SelText=mass[i];
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
09.05.2010, 23:31
Цитата Сообщение от DanUnited Посмотреть сообщение
Правильно, потому что теорию надо знать, у тебя i=0, а символы в строке начинают нумероваться с единицы
Тебе бы тоже не мешало теорию изучить. Символы в строке, элементы в массиве и т.д. нумеруются с нуля.

Ni'Tan, памяти надо выделять на один символ больше чем Edit1->Text.Length(), т.к. необходимо учитывать завершающий символ '\0'.

PadON,
C++
1
2
3
4
5
6
char *mass = new char [Edit1->Text.Length() + 1];
 
for(int i=0; i<Edit1->Text.Length();i++)
  mass[i]=Edit1->Text[i];
 
Edit2->Text = AnsiString(mass);
А лучше:
C++
1
2
3
4
5
char *mass = new char [Edit1->Text.Length() + 1];
 
strcpy(mass, Edit1->Text.c_str());
 
Edit2->Text = AnsiString(mass);
1
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
09.05.2010, 23:49
PadON, а зачем массив?
C++
1
2
3
AnsiString s = Edit1->Text; // или UnicodeString s
... // работа с s
Edit2->Text = s;
CyBOSSeR, в UnicodeString и AnsiString нумерация с 1
2
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
10.05.2010, 00:02
Цитата Сообщение от Roma_F Посмотреть сообщение
CyBOSSeR, в UnicodeString и AnsiString нумерация с 1
У Borland'а как всегда все через ж*пу. Спасибо, буду знать.
0
5 / 5 / 4
Регистрация: 09.05.2010
Сообщений: 76
10.05.2010, 00:51  [ТС]
Цитата Сообщение от Roma_F Посмотреть сообщение
PadON, а зачем массив?
чтобы проверять каждую букву отдельно типа if(mas[i]!="a").......короче просто надо алгоритм поиска букв а я такое делал только в консоли а здесь хз как перевести в масив

Добавлено через 1 минуту
спасибо за помощь !!
я долго не мо розобраться )
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
10.05.2010, 01:05
mass[L] = '\0';
тода все работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int L = Edit1->Text.Length();
    char *mass = new char [L + 1];
 
    for(int i = 0; i < L; ++i)
        mass[i] = Edit1->Text[i+1];
        mass[L] = '\0';
    //--------------------------------------
    Edit2->Clear();
    for(int i = 0; i[mass]; ++i)
        Edit2->Text = Edit2->Text + mass[i];
    //--------------------------------------
    Edit3->Text = mass;
    delete [] mass;
}
//---------------------------------------------------------------------------
1
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
10.05.2010, 09:03
Цитата Сообщение от PadON Посмотреть сообщение
чтобы проверять каждую букву отдельно типа if(mas[i]!="a").......короче просто надо алгоритм поиска букв а я такое делал только в консоли а здесь хз как перевести в масив
но тем не менее вы обращаетесь к Edit1->Text как к массиву:
Цитата Сообщение от PadON Посмотреть сообщение
Edit1->Text[i]
и что помешало делать "как в консоли"?
C++
1
if (Edit1->Text != 'a') ...
Имхо - использовать char для таких целей в Билдере (да и в С++) по меньшей мере странно, если нужна переносимость текста - можно вместо борландовского AnsiString использовать std::string, в нём и нумерация нормальная:
C++
1
2
    std::string s = Edit_1->Text.c_str();
    if (s[0] == 'р')
0
5 / 5 / 4
Регистрация: 09.05.2010
Сообщений: 76
10.05.2010, 12:53  [ТС]
вроде все что я хотел работает, но ....
мне надо проверить есть ли символ ' в масиве.. и не работает у меня ибо это же типа как " .. ((
как сделать проверку знака ' ????

повторяю мой вариант не работает...
C++
1
if(mass[i]==' ' ') mass[i]='q';
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
10.05.2010, 13:08
Цитата Сообщение от PadON Посмотреть сообщение
C++
1
if(mass[i]==' ' ') mass[i]='q';
Вам же даже здесь подсвечена ошибка. Надо написать так
C++
1
if(mass[i]=='\'') mass[i]='q';
, т.е. ' записывается как \'
0
5 / 5 / 4
Регистрация: 09.05.2010
Сообщений: 76
10.05.2010, 13:18  [ТС]
Цитата Сообщение от M128K145 Посмотреть сообщение
Вам же даже здесь подсвечена ошибка. Надо написать так
Код C++
1
if(mass[i]=='\'') mass[i]='q';
, т.е. ' записывается как \'
ну проситите меня лоха ) я только первый курс... хочу очень научиться... просто на лекциях излагают ... хм... хриноватенько..
0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
10.05.2010, 13:42
Тебе бы тоже не мешало теорию изучить. Символы в строке, элементы в массиве и т.д. нумеруются с нуля.
мдя, однозначно голову от программирования сшибло. Ты сначала пподумай сам , причем трижды, а потом другие замечания делай. Кстати попробуй скомпилить если не веришь код:
ShowMessage(Edit1->Text[0]) - и ты обломаешься ))
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
10.05.2010, 14:26
Цитата Сообщение от PadON Посмотреть сообщение
проверить есть ли символ ' в масиве
Pos(const AnsiString&)
C++
1
2
3
4
5
6
7
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Button1->Caption = Edit1->Text.Pos("'") ? "yes" : "no";
}
//---------------------------------------------------------------------------
Все три варианта дают одинаковый результат
C++
1
2
3
4
5
6
7
8
9
10
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int p1 = Edit1->Text.Pos( '\'');
    int p2 = Edit1->Text.Pos( "\'");
    int p3 = Edit1->Text.Pos( "'" );
    ShowMessage( (String)p1 + ' ' + p2 + ' ' + p3 );
}
//---------------------------------------------------------------------------
0
10.05.2010, 14:39

Не по теме:

Цитата Сообщение от DanUnited Посмотреть сообщение
Ты сначала пподумай сам , причем трижды, а потом другие замечания делай.
AnsiString и прочее паскалевское наследие Builder'а - исключение из правил. Для C++ сказанное верно.
Цитата Сообщение от DanUnited Посмотреть сообщение
Кстати попробуй скомпилить если не веришь код:
ShowMessage(Edit1->Text[0]) - и ты обломаешься ))
Не обламаюсь, т.к. не в чем компилировать - Builder'а нет и не будет.

0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
10.05.2010, 20:41
AnsiString и прочее паскалевское наследие Builder'а - исключение из правил. Для C++ сказанное верно.
В чистом C++ если не ошибкаюсь строка - это массив char:
char[255];
Это я бы сказал не строка, а все же именно массив, а в массиве я бы и с отрицательных бы нумеровал, но тут конечно с нуля.
Если брать Visuall C++, использовать CString и т.п.. т.е. действительно строку, то все всегда нумеруется с единицы.
В паскале это String[1],
В билдере это AnsiString[1]/String[1]
Visuall C++: CString[1];
Все что массивное - от минус бесконечности до бесконечности, только огранеченное RAM
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
10.05.2010, 21:30
Цитата Сообщение от DanUnited Посмотреть сообщение
В чистом C++ если не ошибкаюсь строка - это массив char
char* - это строки в стиле СИ (нумерация с нуля).
std::string (точнее std::basic_string<char>) - это строки в стиле С++ (нумерация с нуля).
Цитата Сообщение от DanUnited Посмотреть сообщение
Если брать Visuall C++, использовать CString
CString (точнее либо CStringT<char>, либо CStringT<wchar>) - это MFC/ATL (нумерация с нуля).
Цитата Сообщение от DanUnited Посмотреть сообщение
т.е. действительно строку
Все классы строк так или иначе "оборачивают" обычный массив символов. Строка, не строка, без разницы, в C++ принято нумеровать элементы агрегатов с нуля.
0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
11.05.2010, 13:17
Лана, Pascal это все же реально хрень получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2010, 13:17
Помогаю со студенческими работами здесь

Из memo в edit и обратно.
Случай такой, допустим из эдита в мемо сохранили три значения, далее нужно чтобы все эти три значения в мемо можно было выделить по...

Считать с Edit текст, убрать последний символ из строки и снова записать в Edit
Всем доброго времени суток. У меня тут возник вопрос, как можно считать с Edit текст, а потом убрать последний символ из этой строки и...

Из файла прочитать текст и в этом тексте заменить все пробелы на _ и записать исправленный текст обратно
задача написать программу на assembler, под dos Нужно из файла прочитать текст и в этом тексте заменить все пробелы на _ , и записать...

Сохранение данных из Edit-ов в текстовый файл и обратно
Добрый день. У меня есть в программе две колонки. Одна из Label от 1 до 30 вторая из edit. Это день и число. И в конце ссчитается сумма...

Вывести в Edit текст другого Edit
вот из этих двух процедур procedure TForm1.Edit1Change(Sender: TObject); begin a:=Edit1.Text; end; procedure...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru