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

Логическое отрицание и тип данных AnsiString

27.08.2015, 15:49. Показов 1771. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Вопрос простой, но для меня пока сложный.
В какой лучше тип перевести строку AnsiString, чтоб написать условие типа
C++
1
if(!Ftype) {//Что-то делаю}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2015, 15:49
Ответы с готовыми решениями:

Тип AnsiString
Доброе время суток. Что то не получается вот это задание. В символьной строке, содержащей не более 80 символов,каждые 2 соседних слова...

Как перевести текст из AnsiString (в формате UTF8) в AnsiString формата Windows-1251?
Поиск по форуму не решил текущую проблему: 1. Есть текст в формате UTF-8 в величине: AnsiString qw; Вопрос: 2. Как перевести текст в...

Загрузка данных в AnsiString из файла
Помогите пожалуйста. Сам даже не представляю, как такой можно осуществить. У меня имеется файл: ...

16
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
27.08.2015, 15:58
Цитата Сообщение от avpdnepr Посмотреть сообщение
В какой лучше тип перевести строку AnsiString, чтоб написать условие типа
Если вы хотите проверять строку на пустоту, то лучше всего вот так:
C++
1
2
String str;
if( str.IsEmpty ){}
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
27.08.2015, 16:01
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Если вы хотите проверять строку на пустоту, то лучше всего вот так:
Немного добавлю, делал тест в несколько миллионов строк и проверял двумя методами на пустоту
C++
1
if( str.IsEmpty )
и
C++
1
if( str.Length() ==0 )
В первом вариант прирост почти x2
1
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
27.08.2015, 16:32  [ТС]
А если у меня массив в переменной?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
27.08.2015, 16:43
Цитата Сообщение от avpdnepr Посмотреть сообщение
А если у меня массив в переменной?
Тогда все хорошо.
0
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
27.08.2015, 18:06  [ТС]
Скажите, а почему не пропускает

C++
1
if(PoleStructurW[0][zzz]->Length() == 0)
[C++ Error] DBComparisonOne.cpp(278): E2288 Pointer to structure required on left side of -> or ->*
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
27.08.2015, 18:58
А так?
C++
1
if(PoleStructurW[0][zzz].Length() == 0)
1
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
27.08.2015, 19:08  [ТС]
Спасибо получилось, тогда следующий вопрос. Если можно

Почему не останавливается цикл, вроде правильно написал
C++
1
2
3
4
if(PoleStructurW[0][zzz].IsEmpty())
{
    break;
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
27.08.2015, 19:14
Покажи как выглядит твой цикл?
0
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
27.08.2015, 21:29  [ТС]
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
for(int zz = 0; zz < 2; zz++)
       {
          if(PoleStructur[3][z] == PoleStructurW[3][zz]
          && PoleStructur[0][z] != PoleStructurW[0][zz])
          {
              for(int zzz = 0; zzz < 300; zzz++)
              {
                  if(PoleStructur[0][z] == PoleStructurW[0][zzz])
                  {
                       pole = 1;
                  }
                  if(PoleStructur[0][z] != PoleStructurW[0][zzz] && pole == 0)
                  {
                       MemoE->Lines->Add(PoleStructur[0][z]);
                       Memo1E->Lines->Add(PoleStructurW[0][zzz]);
                  }
 
                  if(PoleStructurW[0][zzz].IsEmpty())
                  {
                      break;
                  }
              }
 
              AlterTable[0][q] = PoleStructur[0][z];
              AlterTable[1][q] = PoleStructur[1][z];
              AlterTable[2][q] = PoleStructur[2][z];
 
              // Ïîòîì óäàëèòü
              MemoE->Lines->Add(PoleStructur[0][z]);
              Memo1E->Lines->Add(PoleStructurW[0][z]);
              //Memo2E->Lines->Add(z);
              //z1 = 300;
 
 
              q++;
          }
 
          if(PoleStructurW[0][zz].IsEmpty())
          {
            break;
          }
}
Добавлено через 10 минут
В 18 строке вместо zz исправил zzz.

Программа компилируется, но не запускается

Добавлено через 1 час 29 минут
Да, сразу хотелось бы знать можно использовать какой-нибудь метод, кроме isNull

Добавлено через 25 минут
Да только поздним вечером понял, что использовать isEmpty не получится. Этот метод проверяет пуст ли весь массив
0
28.08.2015, 04:47

Не по теме:

Цитата Сообщение от Dinkin Посмотреть сообщение
Немного добавлю, делал тест в несколько миллионов строк и проверял двумя методами на пустоту Код C++Выделить код1
if( str.IsEmpty )и Код C++Выделить код1
if( str.Length() ==0 )В первом вариант прирост почти x2
Хм ... Странно ... В файле dstring.h такой код:
C++
1
2
3
4
  __DSTRING_INLINE int __fastcall AnsiString::Length() const
  {
    return (Data)? GetRec().length : 0;
  }
C++
1
    bool __fastcall IsEmpty() const { return Data == NULL; }
Неужели за счет inline'а Length может быстрее, чем IsEmpty работать?

Добавлено через 2 минуты
Хотя сейчас перечитал и ... Может вы именно и имели ввиду, что первый вариант быстрее ...

0
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
28.08.2015, 08:36  [ТС]
Я не совсем понял, как мне использовать ваш пример
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
28.08.2015, 08:43
avpdnepr, я не спроста ответ в теги оффтопа поместил. Это было к вопросу о производительности, которая была упомянута в третьем посте. К вашей вопросу это имеет мало отношения.
0
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
28.08.2015, 09:26  [ТС]
Я нашёл сегодня методы c_str() и data(). Но они у меня тоже отказываются работать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for(int zzz = 0; zzz < 300; zzz++)
              {
                  if(PoleStructur[0][z] == PoleStructurW[0][zzz])
                  {
                       pole = 1;
                  }
                  if(zzz = 299 && PoleStructur[0][z] != PoleStructurW[0][zzz] && pole == 0)
                  {
                       MemoE->Lines->Add(PoleStructur[0][z]);
                       Memo1E->Lines->Add(PoleStructurW[0][zzz]);
                  }
 
                 if(PoleStructurW[0][zzz].c_str()  == "")
                  {
                      break;
                  }
              }
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
28.08.2015, 09:42
Цитата Сообщение от Dinkin Посмотреть сообщение
Немного добавлю, делал тест в несколько миллионов строк и проверял двумя методами на пустоту
Dinkin, добавь еще немного, чтоб не экспериментировать с миллионом строк... - прирост чего: времени выполнения или скорости обработки? Другими словами - какой из вариантов быстрее?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
28.08.2015, 10:26
nick42, kodv,
Взял ~ 2 миллион строк, с рандомными символами, из них половина пустых строк и прогнал двумя методами (раз 10 что бы точно увидеть результат).
Вариант в IsEmpty() обработался в два раз быстрее. Так же делал альфа замеры на нагрузку процессора, c IsEmpty() процессору ~20% легче считать (это если брать Intel).
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2015, 21:55
C++
1
GetRec().length
вероятно и вызывает эту разницу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.09.2015, 21:55
Помогаю со студенческими работами здесь

Назначение типа данных AnsiString
Можете доступно объяснить что такое AnsiString. И почему в Builder в StringGrid используется он?

Логическое отрицание
Доброго времени суток. из за пропущеного занятия, не могу одну вещь разобрать. Что означает восклицательный знак перед именем экземпляра в...

Есть ли экономный способ осуществить логическое отрицание?
Здравствуйте. Есть ли более экономный способ осуществить логическое отрицание? Уж очень не красиво выглядят в коде такие строчки: ...

Отрицание xy это значит умножение х на у или отрицание х + отрицание у
отрицание xy это значит умножение х на у или отрицание х + отрицание у,в таблице истинности незнаю как делать

Даны числа в 16-ричной системе счисления: сложение, вычитание, умножение, деление, логическое отрицание
1 Даны числа а=9531h и b=A78Dh (числа в 16-ричном системе счисления). Нужно выполнить над ними: сложение, вычитание, умножение, деление,...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru