Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2015, 10:13   #31
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Всем спасибо, очень помогли. Под конец книг может посоветуете, а то у меня только C++ для чайников.
Dima-91 вне форума Ответить с цитированием
Старый 02.07.2015, 11:10   #32
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Мне интересно почему не срабатывает эта функция "strcpy".
Автор, скажу тебе следующее, язык С++ паталогически не приспособлен для работы со строками. Например когда мне пришлось работать со строками в этой среде, я забыл про все функции с префиксом str и использовал исключительно функции работы с памятью.
--------------
по сути
допустим, есть кусок памяти длиной в 16 байт и в ней строка "ВАСЯ\0ПРИВЕТ\0" Если пользоваться, функциями с префиксом str... то результат копирования (strcpy) дасть в результирующем массиве "ВАСЯ\0"
В твоём случае, символы поступают на вход в формате WideChar. Если мне не изменяет память, каждый символ в этом формате занимает 2 байта, причём первый байт - код символа, второй байт- код страницы. Для английских символов код страницы 0. То есть, по сути, для "зяблоязыка" строка подобного формата копируется аж до второго байта.
Чтобы скопировать всю информацию я использую команду memcpy
Команде memcpy до одного места нолики или признак конца строки, она тупо переносит с одного дампа в другой, определённое число байт.

---
вывод
Попробуй воспользоваться этой функцией
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 02.07.2015, 12:36   #33
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Под конец книг может посоветуете, а то у меня только C++ для чайников.
О! Это всегда пожалуйста! Этого добра у нас навалом.
Начни вот с этой. Тут многие с нё начинали.



Скачать.
Ну, а вообще, вот тут вагон книжек.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.07.2015, 15:24   #34
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Сообщение от JUDAS Посмотреть сообщение
Автор, скажу тебе следующее, язык С++ паталогически не приспособлен для работы со строками.
Угу, может просто надо правильно готовить?

Цитата:
Сообщение от JUDAS Посмотреть сообщение
Например когда мне пришлось работать со строками в этой среде, я забыл про все функции с префиксом str и использовал исключительно функции работы с памятью.
Вы в мелкософте не работаете? А то они тоже вдруг решили поправить работающий нтфс драйвер... как так получилось, нафик, ... только вопросы.

Цитата:
допустим, есть кусок памяти длиной в 16 байт и в ней строка "ВАСЯ\0ПРИВЕТ\0" Если пользоваться, функциями с префиксом str... то результат копирования (strcpy) дасть в результирующем массиве "ВАСЯ\0"
А если будет "строка" "\4ВАСЯ\5ПРИВЕТ", то новомодные языки, сюрприз-сюрприз, тоже дадут только "\4ВАСЯ". Правда причем тут С++?

Цитата:
В твоём случае, символы поступают на вход в формате WideChar.
Он сам творец своего несчастья.

Цитата:
Если мне не изменяет память, каждый символ в этом формате занимает 2 байта, причём первый байт - код символа, второй байт- код страницы. Для английских символов код страницы 0.
Изменяет.

Цитата:
То есть, по сути, для "зяблоязыка" строка подобного формата копируется аж до второго байта.
Нет, по сути, для "зяблопрограммиста" умный компилятор говорит о несоответствии типов, а не про копирования строк. Читайте тему внимательно.

Цитата:
Чтобы скопировать всю информацию я использую команду memcpy
Команде memcpy до одного места нолики или признак конца строки, она тупо переносит с одного дампа в другой, определённое число байт.
Продолжайте в том же духе. Скрипткиддеры вам только спасибо скажут.

Цитата:
вывод
Попробуй воспользоваться этой функцией
И получи проблемы в другом месте... При выводе, например.
p51x вне форума Ответить с цитированием
Старый 06.07.2015, 00:24   #35
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

p51x, уважаемый "профессионал", с моим стажем в 25 лет (начинал с фортрана и Бейсика), тупее языка чем С++ не встречал никогда и нигде.
Даже пхп-шка СиШарп, намного продуманней чем этот недоезык.
-----------------
Не хочу разводить тут холивар, но на вскидку C++ Builder 6

- динамически массивы - не поддерживает
- сцепка строки спереди, поиск подстроки в строке с заданной позиции - не поддерживает
- элементарных функций ceil, trunc, round - нет
- работа с датой временем - полностью отсутствует

это только верхушка айсберга при попытке перевода рабочего проекта с Делфи на язык "быдлозяблов".
п.с. не хочу обидеть гуру С++, но не сказать тоже не могу. Не зря в интернете кишит вот эта картинка



+добавил
Цитата:
Угу, может просто надо правильно готовить?
Как говорил один мой знакомый "молотком можно и жопу почесать, и пальцы "отрихтовать" - но он служит для забивания гвоздей".
Так вот гуру, языком С++ можно много чего написать, но строки в нём то же самое, что чесать очко молотком.
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 06.07.2015 в 00:27.
JUDAS вне форума Ответить с цитированием
Старый 06.07.2015, 00:47   #36
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Не хочу разводить тут холивар, но на вскидку C++ Builder 6
А давайте говорить о языке, а не делфи подобной поделке не первой свежести?

Цитата:
- динамически массивы - не поддерживает
new, malloc (realloc), vector, deque, ... не нету

Цитата:
- сцепка строки спереди
http://www.cplusplus.com/reference/s...string/insert/

Цитата:
поиск подстроки в строке с заданной позиции
http://www.cplusplus.com/reference/string/string/find/

Цитата:
не поддерживает
может вы что-то прочитаете сначала?

Цитата:
ceil
http://en.cppreference.com/w/cpp/numeric/math/ceil

Цитата:
trunc
http://en.cppreference.com/w/cpp/numeric/math/trunc

Цитата:
round
http://en.cppreference.com/w/cpp/numeric/math/round

Цитата:
- работа с датой временем - полностью отсутствует
http://en.cppreference.com/w/cpp/chrono/c/time
http://en.cppreference.com/w/cpp/chrono/time_point

Цитата:
это только верхушка айсберга при попытке перевода рабочего проекта с Делфи на язык "быдлозяблов".
Так зачем вы перелезаете с мега языка на этот?

Цитата:
Как говорил один мой знакомый "молотком можно и жопу почесать, и пальцы "отрихтовать" - но он служит для забивания гвоздей".
Как самоиронично... Ну так забивайте гвозди, а не пальцы рехтуйте.

Цитата:
Так вот гуру, языком С++ можно много чего написать, но строки в нём то же самое, что чесать очко молотком.
Может хотя бы сначала описание класса прочитаете http://www.cplusplus.com/reference/string/string/ ?

P.S.
Цитата:
Даже пхп-шка СиШарп, намного продуманней чем этот недоезык.
Только вырос он вовсе не их пхп-шки, а то был бы php#...

Последний раз редактировалось p51x; 06.07.2015 в 00:50.
p51x вне форума Ответить с цитированием
Старый 06.07.2015, 01:07   #37
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
языком С++ можно много чего написать, но строки в нём то же самое, что чесать очко молотком.
в принципе, согласен. я знаю и паскаль и с++, так что не буду голословен.
В С++ мне не нравится отсутствие чёткой типизации - минное поле ошибок, локализовывать которые ой как геморройно (кто в теме - поймут); на фоне этого оператор "*" - фигня.

Вот, чего мне в паскале не хватает - это сишного тернарного оператора "x ? y : z", функции math.ifthen() - это, всё ж, не compiler-magic.
А строки... Нету в сях native-строк, есть только массивы байт/слов в памяти и указатели на начала этих массивов. А как их аллочить и отдавать системе, а также и интерпретировать - прерогатива программиста. Финализируемых типов нет. увы.

з.ы. я где-то читал, что основатели С++ создали этот язык как шутку, максимально усложняющую процесс программирования/отладки/сопровождения. Это и читабельности кода тоже касается.

Если найдутся оппоненты, то им вопрос: чем паскаль проигрывает, чего в нём не хватает?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.07.2015, 01:08   #38
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Во, нарыл!
Цитата:
Код:
Уважаемые коллеги!

     Из  всемирно  известного  информационного   агенства   News   Service
поступило сообщение, которое навсегда меняет лицо и сущность  современного
программирования.  Из-за  тайного  соглашения  между  IBM,   Microsoft   и
неназванных высокопоставленных лиц из News  Service  (недавно  вышедших  в
отставку из за конфликтов  в  президентом  фирмы),  данная  новость  стала
известна миру только 8 дней назад. Сейчас уже всем очевидно, что  в  споре
между сторонниками Паскаля и Си. Как признали создатели ОС UNIX разработка
была задумана как первоапрельская шутка, которая, к сожалению была неверно
истолкована. Впрочем предоставим слово самим создателям OC  UNIX.  Перевод
был выполнен Дмитрием Кохманюком, которому составитель выражает  искреннюю
благодарность.

            Создатели Cи и UNIX признают, что разыграли весь мир

     В заявлении, потрясшем весь компьютерный  мир,  Кен  Томпсон,  Деннис
Ричи и Брайан Керниган признали, что  операционная  система  UNIX  и  язык
программирования   Си,   созданные   ими   --   тщательно   спланированный
первоапрельский розыгрыш,  "продержавшийся"  более  20  лет.  Выступая  на
последнем Конгрессе разработчиков программного обеспечения  для  ОС  ДЕМОС
(UnixWorld Software Development Forum), Томпсон признал следующее:

     "В 1969 году AT&T завершила работу над проектом операционной  системы
Multics (известная операционная система  60-х,  см.  прим.2)  Брайан  и  я
только что начали работу с  ранней  реализаций  Паскаля,  разработанной  в
лаборатории  проф.  Вирта  в  Швейцарии,  и  находились  под  впечатлением
элегантности, простоты  и  мощи  этого  языка.  Деннис  как  раз  прочитал
"Уставший  от  колец",  веселую  сатиру  на  знаменитую  трилогию  Толкина
"Властелин колец" (*1*). Ради шутки мы решили написать  пародии  на  среду
Multics и Паскаль. Деннис и я отвечали за  операционную  среду.  Глядя  на
Multics, мы спроектировали новую систему настолько сложной  и  запутанной,
чтобы максимально "испортить жизнь" рядовым пользователям, назвали ее UNIX
как пародию  на  Multics,  добавив  много  других  достаточно  рискованных
аналогий.
     Затем Деннис и Брайан разработали по-настоящему  извращенный  диалект
Паскаля, назвав его "A". Когда мы  обнаружили,  что  другие  действительно
пытаются писать программы на A, мы  быстро  добавили  еще  парочку  хитрых
примочек, создав B, BCPL,  и,  наконец,  Си.  Мы  остановились,  добившись
успешной компиляции следующего:

    for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);

     Мы не могли даже  представить,  что  современные  программисты  будут
пытаться  использовать  язык,  допускающий  подобный  оператор!  Мы   даже
собирались  продать  все  это  Советам,  чтобы   отбросить   развитие   их
компьютерного дела на 20 лет  назад  (*2*).  Представьте  наше  удивление,
когда  AT&T,  а  также  другие  американские  корпорации  начали  пытаться
использовать UNIX и  Си!  Более  20  лет  ушло  на  то,  чтобы  приобрести
достаточный  опыт  для  создания  хоть  немного  полезных   приложений   с
использованием  этой  технологической  пародии  60-х.  Мы  были   поражены
упорством  и  целеустремленностью  (если  не  чувством  здравого   смысла)
типичного программиста, использующего  UNIX  и/или  Си.  В  любом  случае,
Брайан, Деннис и я в  течение  последних  лет  работали  исключительно  на
Паскале в среде Apple Macintosh и чувствуем себя по-настоящему  виноватыми
в том хаосе, путанице и действительно скверном программировании,  причиной
которых явилась наша неудачная шутка столько лет тому назад."

     Большинство поставщиков версий UNIX и Си,  включая  AT&T,  Microsoft,
Hewlett-Packard, GTE, NCR, DEC, отказались комментировать это выступление.
Borland International, ведущий производитель инструментальных средств  для
Паскаля и Си, включая популярные Турбо Паскаль, Турбо  Си  и  Турбо  Си++,
заявил, что они давно подозревали это и  будут  продолжать  улучшать  свои
разработки для Паскаля и  прекратят  дальнейшие  усилия  по  развитию  Си.
Официальный  представитель  IBM  разразился  безудержным  хохотом  и   был
вынужден отменить спешно собранную конференцию о судьбе RS6000 заявив, что
'VM появится в ближайшее время'. В непонятом аудиторией кратком  сообщении
проф. Вирт, отец Паскаля, Модулы-2 и Оберона, сказал лишь, что некто  P.T.
Barnum был прав.
     Кстати, из обычно совершенно надежных источников стало известно,  что
подобное признание возможно скоро последуют от Вильяма Гейтса относительно
MS-DOS и Windows. Не случайно, вышеупомянутый представитель IBM уже  начал
отрицать, что Виртуальная Машина (VM) является созданной  для  внутреннего
употребления аналогичной шуткой, вырвавшейся наружу.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.07.2015, 01:09   #39
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Примечания переводчика
Цитата:
(*1*) Книга Толкина - известного автора, жившего до эры компьютеров,
до сих пор является настольной руководством для создателей операционных
систем. В заметке, видимо, имеется в виду упрощенная версия, созданная
специально для разработчиков операционных систем персональных компьютеров.
(*2*) Вот было бы здорово - у нас были бы авторские права на UNIX!!!
Но, возможно, тогда он разделил бы судьбу OS/360 (после адаптации ИИЦЭВТ)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.07.2015, 03:15   #40
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
В С++ мне не нравится отсутствие чёткой типизации - минное поле ошибок
Вы Пайтон или Джаваскрипт видели? Вот там отсутствие строгой типизации...

Цитата:
Нету в сях native-строк, есть только массивы байт/слов в памяти и указатели на начала этих массивов.
Ну а в паскале это структура из байта-длины и массива байт.

Цитата:
А как их аллочить и отдавать системе, а также и интерпретировать - прерогатива программиста.
Возьмите стандартный класс стринг, там за вас подумали... Зато если мне вдруг прийдется где-то аллокатор свою юзать я это смогу.

Цитата:
з.ы. я где-то читал, что основатели С++ создали этот язык как шутку, максимально усложняющую процесс программирования/отладки/сопровождения. Это и читабельности кода тоже касается.
Байке двадцать лет в обед, а еще есть от Страуструпа...

Цитата:
Если найдутся оппоненты, то им вопрос: чем паскаль проигрывает, чего в нём не хватает?
Вы про паскаль, борланд паскаль или делфи?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
idhttp Not Connected как решить проблему? jone Мультимедиа в Delphi 7 02.06.2013 16:17
Как решить проблему со связями? GinIvan Помощь студентам 3 13.03.2012 20:46
ВПР не подходит. Как решить проблему? Vladislav_Dmitriev Microsoft Office Excel 5 23.01.2012 17:37
Как решить проблему двух серверов? Томбмастер Компьютерное железо 0 30.09.2009 21:49
Как решить проблему с массивом? Dem80 Общие вопросы C/C++ 0 15.03.2009 17:05