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

memo считывание

24.02.2011, 01:14. Показов 3398. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru