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

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

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

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

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

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

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

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

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

16
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
27.08.2015, 15:58 2
Цитата Сообщение от avpdnepr Посмотреть сообщение
В какой лучше тип перевести строку AnsiString, чтоб написать условие типа
Если вы хотите проверять строку на пустоту, то лучше всего вот так:
C++
1
2
String str;
if( str.IsEmpty ){}
0
744 / 531 / 133
Регистрация: 31.05.2013
Сообщений: 3,027
Записей в блоге: 3
27.08.2015, 16:01 3
Цитата Сообщение от 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  [ТС] 4
А если у меня массив в переменной?
0
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
27.08.2015, 16:43 5
Цитата Сообщение от avpdnepr Посмотреть сообщение
А если у меня массив в переменной?
Тогда все хорошо.
0
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
27.08.2015, 18:06  [ТС] 6
Скажите, а почему не пропускает

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

Почему не останавливается цикл, вроде правильно написал
C++
1
2
3
4
if(PoleStructurW[0][zzz].IsEmpty())
{
    break;
}
0
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
27.08.2015, 19:14 9
Покажи как выглядит твой цикл?
0
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
27.08.2015, 21:29  [ТС] 10
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
kodv
28.08.2015, 04:47
  #11

Не по теме:

Цитата Сообщение от 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  [ТС] 12
Я не совсем понял, как мне использовать ваш пример
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
28.08.2015, 08:43 13
avpdnepr, я не спроста ответ в теги оффтопа поместил. Это было к вопросу о производительности, которая была упомянута в третьем посте. К вашей вопросу это имеет мало отношения.
0
1 / 1 / 1
Регистрация: 12.08.2015
Сообщений: 125
28.08.2015, 09:26  [ТС] 14
Я нашёл сегодня методы 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
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
28.08.2015, 09:42 15
Цитата Сообщение от Dinkin Посмотреть сообщение
Немного добавлю, делал тест в несколько миллионов строк и проверял двумя методами на пустоту
Dinkin, добавь еще немного, чтоб не экспериментировать с миллионом строк... - прирост чего: времени выполнения или скорости обработки? Другими словами - какой из вариантов быстрее?
0
744 / 531 / 133
Регистрация: 31.05.2013
Сообщений: 3,027
Записей в блоге: 3
28.08.2015, 10:26 16
nick42, kodv,
Взял ~ 2 миллион строк, с рандомными символами, из них половина пустых строк и прогнал двумя методами (раз 10 что бы точно увидеть результат).
Вариант в IsEmpty() обработался в два раз быстрее. Так же делал альфа замеры на нагрузку процессора, c IsEmpty() процессору ~20% легче считать (это если брать Intel).
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2015, 21:55 17
C++
1
GetRec().length
вероятно и вызывает эту разницу.
0
03.09.2015, 21:55
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.09.2015, 21:55
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Как запретить подсветку выделенного текста с помощью CSS
InfoMaster 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения. Выделение текста может. . .
Как выполнить другую программу или системную команду из Python
InfoMaster 20.01.2025
Python предоставляет мощные инструменты для выполнения системных команд и управления внешними процессами, что делает его идеальным выбором для автоматизации различных задач системного. . .
Как узнать директорию bash-скрипта из самого bash-скрипта
InfoMaster 20.01.2025
При разработке bash-скриптов одной из важных задач является определение директории, в которой находится исполняемый скрипт. Это критически важно для корректной работы с файлами, загрузки конфигураций. . .
В чем разница между let и var в JavaScript
InfoMaster 20.01.2025
JavaScript прошел длинный путь эволюции с момента своего создания в 1995 году. Одним из важнейших аспектов развития языка стало совершенствование механизмов объявления и управления переменными. . . .
Эффективная работа со строками в Go
InfoMaster 20.01.2025
Язык программирования Go предлагает уникальный подход к работе со строками, который существенно отличается от многих других языков программирования. В Go строки представляют собой неизменяемые. . .
Как проверить, что отображение (map) содержит ключ в Go
InfoMaster 20.01.2025
Отображения (maps) в языке программирования Go представляют собой мощные структуры данных, которые позволяют хранить пары ключ-значение и обеспечивают быстрый доступ к данным по уникальным. . .
Как организовать домашнее хранилище фильмов с общим доступом для всей семьи
InfoMaster 20.01.2025
Преимущества домашнего медиасервера В современном мире, где цифровой контент стал неотъемлемой частью нашей жизни, организация домашнего медиасервера становится все более актуальной задачей. . . .
Перспективы развития жестких дисков: есть ли у них будущее?
InfoMaster 20.01.2025
История и эволюция жестких дисков История развития жестких дисков начинается в 1956 году, когда компания IBM представила первое устройство для хранения данных на магнитных пластинах - IBM 350. . .
Распознавание изображений (компьютерное зрение) на C++
InfoMaster 20.01.2025
Введение в компьютерное зрение и основы работы с изображениями Компьютерное зрение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, позволяющую. . .
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru