Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
1

Преобразование строки в масив

27.05.2010, 20:11. Показов 1406. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Какое имя функции что би представить строку в Memo как масив,если разделитель знак табуляции??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2010, 20:11
Ответы с готовыми решениями:

Преобразование строки Из AnsiString в Char, и копировие этой строки.
выходить ошибка при нажтии кнопки, хелп! void __fastcall TForm1::Button1Click(TObject *Sender) {...

Преобразование строки
Привет всем. Не получается преобразовать данные из Edit'а. int s= atoi(Speed->Text); Почему?? ...

Преобразование строки в число
в delphi то strtoint(переменная), а в c++ builder как выглядит решил попрактиковаться в...

Преобразование строки в дату
Есть строка формата: "YYYY-MM-DD HH:MM:SS" или "2010-10-06 22:33:44" можно ее как нибудь не...

10
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
28.05.2010, 10:04 2
Chaps, Можно так.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TSysCharSet chTab;
  chTab<<'\t';
 
  TStringList *TokenTab = new TStringList();
 
  String str = "Некоторая строка\t разделённая табуляторами.\t Проверка\t работает.";
  ExtractStrings(chTab, chTab, str.c_str(), TokenTab);
 
  ShowMessage(TokenTab->Text);
 
  delete TokenTab;
}
//---------------------------------------------------------------------------
...
0
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
28.05.2010, 14:33  [ТС] 3
Спасибо, Maestro, сейчас попробую..
0
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
29.05.2010, 14:55  [ТС] 4
Не выходит у меня..
кароч вот фрагмент моей програмы, подскажите как ее осуществить..
суть в том что ми читаем из Memo строку разделеную знаком табуляции(строка таблицы) и представляем ее как масив для того что бы определить подходять ли данные находящиеся в 3 столбце условию if (2010-StrToInt(mas[2]))>65
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString s; int i,j=1;
for (i=0; i<Memo1->Lines->Count; i++){
s=Memo1->Lines[i];
//Здесь должна быть функция которая строку s представляет как масив mas[], что бы потом я мог провести отбор для 3 елемента..
if (2010-StrToInt(mas[2]))>65){
StringGrid1->Cells[k][j]=IntToStr(j);
for (int k=1; k<6; k++)
StringGrid1->Cells[k][j]=mas[k];
j++;}
if (j==1)ShowMessage("Викладачі пенсійного віку відсутні");
StringGrid1->Visible=true;
Label7->Visible=true;
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
29.05.2010, 15:31 5
Цитата Сообщение от Chaps Посмотреть сообщение
Не выходит у меня..
а вы пробовали?

Цитата Сообщение от Chaps Посмотреть сообщение
if (2010-StrToInt(mas[2]))>65)
C++
1
if (2010-StrToInt(TokenTab->Strings[2]))>65)
0
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
29.05.2010, 16:25  [ТС] 6
я сделал вот так, но запрос работает только для одной строки, если в Memo больше чем 1 строка то вибивает ошибку: Access violation at address 00000000. Read of address 000000000. Почему?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
AnsiString s,mas[5]; int k,i,j=1;
{
  TSysCharSet chTab;
  chTab<<'\t';
 
  TStringList *TokenTab = new TStringList();
for (i=0; i<Memo1->Lines->Count; i++){
  String str=Memo1->Lines[i].Text ;
  ExtractStrings(chTab, chTab, str.c_str(), TokenTab);
                                                            }
 if (2010-StrToInt(TokenTab->Strings[2])>65)
{
StringGrid1->Cells[k][j]=IntToStr(j);
for (int k=0; k<6; k++)
StringGrid1->Cells[k+1][j]=TokenTab->Strings[k];
j++;}
if (j==1)ShowMessage("Викладачі пенсійного віку відсутні");
  delete TokenTab;
}
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
29.05.2010, 16:35 7
трудно найти логику в этой куче - такое впечатление что фигурные скобки живут своей жизнью
оформите нормально код
0
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
30.05.2010, 15:08  [ТС] 8
Так пойдет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString s,mas[5]; int k,i,j=1;
{ TSysCharSet chTab;
chTab<<'\t';
 
TStringList *TokenTab = new TStringList();
for (i=0; i<Memo1->Lines->Count; i++){
String str=Memo1->Lines[i].Text ;
ExtractStrings(chTab, chTab, str.c_str(), TokenTab);}
//  ShowMessage(TokenTab->Text);
if (2010-StrToInt(TokenTab->Strings[2])>65)
{ StringGrid1->Cells[k][j]=IntToStr(j);
for (int k=0; k<6; k++)
StringGrid1->Cells[k+1][j]=TokenTab->Strings[k];
j++;}
if (j==1)ShowMessage("Âèêëàäà÷³ ïåíñ³éíîãî â³êó â³äñóòí³");
delete TokenTab;}}
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
30.05.2010, 16:03 9
Цитата Сообщение от Chaps Посмотреть сообщение
Так пойдет?
ничего не изменилось

вот ваш код
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::Button2Click(TObject *Sender)
{
    AnsiString s,mas[5];
    int k, i, j=1;
    {
        TSysCharSet chTab;
        chTab<<'\t';
 
        TStringList *TokenTab = new TStringList();
        for (i=0; i<Memo1->Lines->Count; i++)
        {
            String str = Memo1->Lines[i].Text ;
            ExtractStrings (chTab, chTab, str.c_str(), TokenTab);
        }
 
        if (2010-StrToInt(TokenTab->Strings[2])>65)
        {
            StringGrid1->Cells[k][j] = IntToStr(j);
            for (int k=0; k<6; k++)
                StringGrid1->Cells[k+1][j]=TokenTab->Strings[k];
            j++;
        }
        if (j==1)
            ShowMessage("Викладачі пенсійного віку відсутні");
 
        delete TokenTab;
    }
}
так сразу становится яснее что происходит в программе
зачем фигурная скобка после "int k, i, j=1;"
в первом цикле проходятся все строки, но потом берётся солбец только из первой строки (TokenTab->Strings[2])
2
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 6
30.05.2010, 17:45  [ТС] 10
Спасибо!
Можешь помочь пожалуйста как сделать что бы стодбец 2, брался не только с первой строки, а и с всех что есть?
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
30.05.2010, 23:06 11
если я правильно понял задачу (сомневаюсь насчёт переменной j), то выглядеть будет где-то так
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
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    TSysCharSet chTab;
    chTab << '\t';
 
    for (int i = 0; i < Memo1->Lines->Count; i++)
    {
        TStringList *TokenTab = new TStringList();
 
        String str = Memo1->Lines[i].Text;
        ExtractStrings (chTab, chTab, str.c_str(), TokenTab);
 
        if (TokenTab->Count < 6)
        {
            ShowMessage("Ошибка чтения столбцов таблицы");
            return;
        }
 
        if (2010 - StrToInt(TokenTab->Strings[2]) > 65)
        {
            StringGrid1->Cells[k][i+1] = IntToStr(i+1);
            for (int k = 0; k < 6; k++)
                StringGrid1->Cells[k + 1][i+1] = TokenTab->Strings[k];
        }
        else
        {
            ShowMessage("Викладачі пенсійного віку відсутні");
        }
 
        delete TokenTab;
    }
}
работоспособность я естественно не проверял
0
30.05.2010, 23:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2010, 23:06
Помогаю со студенческими работами здесь

Преобразование строки в дату
Всем привет! Есть строка вида &quot;текст текст текст 9 Jan 1973 текст текст текст&quot; ее необходимо...

TryStrToFloat - некорректное преобразование из строки
Добрый день. Столкнулся с проблемой преобразования числа из текстового файла (файл выдается с...

Преобразование строки к URL-виду
Приветствую, ребята! Недавно проскальзовала тема по поводу преобразования строки к виду URL,...

Преобразование символьной строки и шифрование
1) Преобразование символьной ASCIIZ-строки в ASCII-строкy; 2) Шифрование символьной строки методом...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru