Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 58

memo считывание

24.02.2011, 01:14. Показов 3377. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня проблема с мемо. Вот пусть у меня есть строка 2х1+4х2-6х3<=6. Цифры которые после х, это нумерация х. Вот мне нужно записать в edit числа которые стоят перед х-ами. Как прочитать первую цифру перед первым х, я понял. Я это реализовал так
C++
1
2
3
4
5
6
int i;
AnsiString s1,s2;
s1 = Memo1->Lines->Strings[0];
s2 = "x";
i = s1.Pos(s2);
if (i) Edit1->Text = s1.SubString(i -1, 2);
только если я пишу Edit1->Text=s1.SubString(i-1) вылетает ошибка, нужно Edit1->Text = s1.SubString(i -1, 2). Не пойму зачем тут еще нужна 2?
а если будет перед х 3 или 4 числа, как их считать? помогите кто чем может....
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2011, 01:14
Ответы с готовыми решениями:

Считывание HEX в Memo
Доброго дня. Ребята спасайте , пытаюсь считать файлик , ну и получить содержимое в HEX к примеру в Memo . исключив все ff ff ff ff...

Посимвольное считывание из файла в Memo
Всем привет! Помогите пожалуйста в решении проблемы. Мне нужно считать посимвольно файл в Memo1 Но как чайнику, мне сделать трудно... ...

Считывание с поля Memo в переменные
Всем привет, столкнулся с проблемой, нужно с поля Memo данные считать в переменные но считывание не происходит, в переменные считывает...

7
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.02.2011, 04:08
C++
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
void __fastcall TForm1::FormCreate(TObject *Sender)
{
// на форме Edit1, Edit2, Memo1, Button1, Button2
  UnicodeString str = "2x1+4x2-6x3<=6";
  Edit1->Text = str;
  Edit2->Text = "";
  Memo1->Text = "";
  Button1->Caption = "В Memo1";
  Button2->Caption = "В Edit2";
}
// вариант 1 -----------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TStringList *list = new TStringList;
  UnicodeString s1; // для C++ Builder 6 заменить на AnsiString
  s1 = Edit1->Text; // строка для обработки
  TSysCharSet Tws,Tcs; // is a set containing ANSI characters
  Tcs<<'x'; // разделитель подстрок
  ExtractStrings(Tcs,Tws,s1.c_str(),Memo1->Lines); // извлекаем подстроки по разделителю
                                                   //  и добавляем в Memo1
  int j = Memo1->Lines->Count-1;
  Memo1->Lines->Delete(j); // удаляем лишние символы после последнего x
}
// вариант 1 -----------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  String s = Edit1->Text;// или Memo1->Lines->Strings[0] -
                          // если данные у вас там
  TStringList *list1 = new TStringList();
  TStringList *list2 = new TStringList();
  list1->StrictDelimiter = true; // заменяем разделитель "пробел" на свой
  list1->Delimiter = 'x'; // разделитель
  list1->DelimitedText = s; // строка для разбора
  for (int i=0; i < list1->Count; i++) {
    list2->Add(list1->Strings[i]);
  }
  int j = list2->Count-1; // определяем последнюю строку списка
  list2->Delete(j); // удаляем лишние символы после последнего разделителя
  Edit2->Text = list2->Text;
  delete list1; // убираем за собой
  delete list2;
  list1 = NULL; // обнуляем указатель
  list2 = NULL;
}
Миниатюры
memo считывание  
1
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 58
24.02.2011, 10:23  [ТС]
спасибо за код)
а как реализовать так, чтобы счтитывались только цифры перед х-ами, но без знаков +,-. 2х1+3х2, должны считатся ток 2 и 3, а "+" и нумерацию икса не считывать?
0
3 / 3 / 1
Регистрация: 23.02.2011
Сообщений: 18
24.02.2011, 13:34
Привет похоже ты тоже занят решением (ЗЛП) задач линейного программирования
Если я не ошибаюсь,что тебе нужно вот мой пример может быть поможет для решения твоей проблемы думаю разберешь что к чему и поправишь, как тебе будет нужно
C++
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
31
32
33
34
35
36
//Начинаем заполнять строки таблицы из системы ограничений
for (J = 1; J < Form2->sSpinEdit2->Value+1; J++)
    {
    //Присвоим строке SLabel значение ограничения
    SLabel = ((TsLabel*)Components[32+J])->Caption;
    //Начинаем извлекать нужные значения
    for (I = 1; I < Form2->sSpinEdit1->Value+1; I++)
        {
        //Присвоим XString номер переменной например X2
        XString = SLabel.SubString(Pos("X",SLabel),2);
        //Если номер переменной совпадает с номером столбца
        if(XString == StringGrid->Cells[I][0])
            {
            //Присвоим ChString число перед номером переменной
            ChString = StrToFloat(SLabel.SubString(0,Pos("X",SLabel)-1));
            //И запишем его в таблицу
            StringGrid->Cells[I][J] = FloatToStrF(ChString, ffFixed, 9, ComBox) * 1;
            //Если перед числом стоит знак +
            if(SLabel.SubString(Pos(" ",SLabel)+1,1) == "+")
                {
                //Удалим все до него чтобы осталось новое число с номером переменной
                SLabel = SLabel.Delete(1,Pos(" ",SLabel)+1);
                }
            //Если знак - удалим все до него чтобы не менять знаки у числа
            else SLabel = SLabel.Delete(1,Pos(" ",SLabel));
            }
        //Если нет то идем дальше и поставим 0
        else StringGrid->Cells[I][J] = 0;
        //Если достигли конца строки
        if(SLabel.Length() <= 0)
            {
            //Выходим из цикла
            break;
            }
        }
    }
в примере имеется ограничения записанные в виде 3x1 +1x3 -6x4 - пример ограничения
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.02.2011, 13:43
C++
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
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Edit1->Text = "2х1+3х2";
  Edit2->Text = "";
  Memo1->Text = "";
  Button1->Caption = "Фас!";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TStringList *list = new TStringList();
  UnicodeString str = Edit1->Text;
  wchar_t cr1;
  wchar_t cr2;
  int sub1 = str.Pos("x");
  int sub2 = str.Pos("+");
  for (int i = 0; i <= str.Length(); i++) {
    str = str.SubString(sub1-1,1);
    list->Add(str);
    str = Edit1->Text;
    str = str.SubString(sub2+1,1);
    list->Add(str);
    list->Delete(list->Count-1);
  }
  Edit2->Text = list->Text;
  delete list;
  list = NULL;
}
2
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 58
24.02.2011, 17:25  [ТС]
спс) попытаюсь разобратся
0
 Аватар для delete1991
2 / 2 / 0
Регистрация: 05.02.2011
Сообщений: 82
10.04.2011, 21:04
Цитата Сообщение от LK Посмотреть сообщение
C++
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
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Edit1->Text = "2х1+3х2";
  Edit2->Text = "";
  Memo1->Text = "";
  Button1->Caption = "Фас!";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TStringList *list = new TStringList();
  UnicodeString str = Edit1->Text;
  wchar_t cr1;
  wchar_t cr2;
  int sub1 = str.Pos("x");
  int sub2 = str.Pos("+");
  for (int i = 0; i <= str.Length(); i++) {
    str = str.SubString(sub1-1,1);
    list->Add(str);
    str = Edit1->Text;
    str = str.SubString(sub2+1,1);
    list->Add(str);
    list->Delete(list->Count-1);
  }
  Edit2->Text = list->Text;
  delete list;
  list = NULL;
}
я вроде бы разобрался в коде, но вот не очень понял как работает SubString. Какие параметры задается в скобках двумя 1-ми через запятую?
а если перед x будет стоять 2 или 3 цифры, а в SubStringe будут настройки для считывания ток 1 цифры перед х и после +, что тогда делать?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.04.2011, 22:32
Цитата Сообщение от delete1991 Посмотреть сообщение
я вроде бы разобрался в коде, но вот не очень понял как работает SubString. Какие параметры задается в скобках двумя 1-ми через запятую?
а если перед x будет стоять 2 или 3 цифры, а в SubStringe будут настройки для считывания ток 1 цифры перед х и после +, что тогда делать?
вобче, может вам проще будет использовать
C++
1
2
3
4
5
TSysCharSet Tws,Tcs;  
Tcs<<'+'<<'х'; // разделители
Edit1->Text = "2х1+3х2";
AnsiString s = Edit1->Text;
ExtractStrings(Tcs,Tws,s.c_str(),ListBox1->Items); // или Memo->Lines
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2011, 22:32
Помогаю со студенческими работами здесь

Некорректное считывание CaretPos в Memo
Всем привет, столкнулся с проблемой: Необходимо было обработать клик в Мемо, и выписать строку по которой кликнули. Обрабатывал событие...

Перенос текста из Memo в Memo (Drag&Drop)
Подскажите как осуществить перетаскивание текста из memo в memo в с++ builder???

Edit Memo Массив Добовление удаление с Memo исходя из введеных данных в Edit
Помогите реализовать такое вот задание: Есть форма на которой присутствуют Memo1 Edit1 Button1 В эдит1 заносим допустим A; и в мемо1...

Считывание строк из Memo
Пожалуйста, подскажите, как сделать чтобы этот код считывал строки из компонента Memo1. const F=82; var cnt: array of real; c:char; ...

Считывание из поля Memo
Здравствуйте! Нужна помощь в написании программы. задача состоит в том, что бы вычислить ASCII-код каждой буквы слова, введенного в поле...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru