|
|
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
Написал функцию Копирования фрагмента строки в строку, начиная с Index символа и заканчивая Finish. Правильно ли она написана? Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 14:48 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
лучше memcpy использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 14:57 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
man_555лучше memcpy использовать чем лучше ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:00 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
man_555лучше memcpy использовать С memcpy у меня ошибку выкидывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:02 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
1) Finished - количество байт. Так и подразумевалось? 2) strncpy сюда действительно более подходит. 3) Посе копирования надо result[Finished] сделать равным нулем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:13 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
Akh1) Finished - количество байт. Так и подразумевалось? 2) strncpy сюда действительно более подходит. 3) Посе копирования надо result[Finished] сделать равным нулем. 1. Да, малость перепутал в формулировке. 3) Посе копирования надо result[Finished] сделать равным нулем. - А это я не совсем понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:15 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
Akh1) Finished - количество байт. Так и подразумевалось? 2) strncpy сюда действительно более подходит. 3) Посе копирования надо result[Finished] сделать равным нулем. 3. delete(result) - так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:16 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
СИСАША 3) Посе копирования надо result[Finished] сделать равным нулем. - А это я не совсем понял strncpy Функция strncpy работает аналогично, кроме того, что копируютсятолько первые n байтов строки src. Таким образом, есл и в n байтах строки src нет нулевого байта, то строка результатане будет заканчиваться символом ‘\0’. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:17 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
перво-наперво - какова цель, и почему не использовать stl::string? а есть кусок кода, который отвечает за delete result? Или это надо всё-время помнить, что после copy надо вызывать delete? imho стиль довольно-таки опасный. Зачем использовать старые C-функции заместо новых возможностей C++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:17 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
Akh1) Finished - количество байт. Так и подразумевалось? 2) strncpy сюда действительно более подходит. 3) Посе копирования надо result[Finished] сделать равным нулем. 3. Подразумевалось, что char* должен заканчиваться терминатором? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:17 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
СИСАША Akh1) Finished - количество байт. Так и подразумевалось? 2) strncpy сюда действительно более подходит. 3) Посе копирования надо result[Finished] сделать равным нулем. 3. delete(result) - так? Нет. Это после использования. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:18 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
СИСАША Akh1) Finished - количество байт. Так и подразумевалось? 2) strncpy сюда действительно более подходит. 3) Посе копирования надо result[Finished] сделать равным нулем. 3. Подразумевалось, что char* должен заканчиваться терминатором? Да. А в твоем коде это не детерминировано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:19 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
man_555перво-наперво - какова цель, и почему не использовать stl::string? а есть кусок кода, который отвечает за delete result? Или это надо всё-время помнить, что после copy надо вызывать delete? imho стиль довольно-таки опасный. Зачем использовать старые C-функции заместо новых возможностей C++? Мне казалось, что так будет рациональнее и правельнее. Эту функцию надо будет потом вставить в dll и откомпилить на VC2006 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:20 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
man_555перво-наперво - какова цель, и почему не использовать stl::string? а есть кусок кода, который отвечает за delete result? Или это надо всё-время помнить, что после copy надо вызывать delete? imho стиль довольно-таки опасный. Зачем использовать старые C-функции заместо новых возможностей C++? 1. Задание - проверить существующий код. 3. Да, стиля нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:20 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
Akh СИСАША Akh1) Finished - количество байт. Так и подразумевалось? 2) strncpy сюда действительно более подходит. 3) Посе копирования надо result[Finished] сделать равным нулем. 3. delete(result) - так? Нет. Это после использования. Код: plaintext 1. 2. Итак Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:22 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
Akh man_555перво-наперво - какова цель, и почему не использовать stl::string? а есть кусок кода, который отвечает за delete result? Или это надо всё-время помнить, что после copy надо вызывать delete? imho стиль довольно-таки опасный. Зачем использовать старые C-функции заместо новых возможностей C++? 1. Задание - проверить существующий код. 3. Да, стиля нет. А что подразумеваете под стилем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:23 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
СИСАШАМне казалось, что так будет рациональнее и правельнее. Эту функцию надо будет потом вставить в dll и откомпилить на VC2006 Конечно в некоторых случаях можно и так писать, это как исключения из правил. Но сам для себя должен иметь обоснования такому подходу. Желательно же, чтобы каждый уровень кода сам отвечал за память которую он выделяет. Т.е. выделил память, передал функции, получил результат, использовал, очистил память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:23 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
Akh СИСАШАМне казалось, что так будет рациональнее и правельнее. Эту функцию надо будет потом вставить в dll и откомпилить на VC2006 Конечно в некоторых случаях можно и так писать, это как исключения из правил. Но сам для себя должен иметь обоснования такому подходу. Желательно же, чтобы каждый уровень кода сам отвечал за память которую он выделяет. Т.е. выделил память, передал функции, получил результат, использовал, очистил память. Вот меня и мучал вопрос об очистке памяти. Память мы выделили только Result, значит и очищать надо только результ, а вот в какое "место" вставить очищение - мне не понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:25 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
СИСАША Akh СИСАША Akh1) Finished - количество байт. Так и подразумевалось? 2) strncpy сюда действительно более подходит. 3) Посе копирования надо result[Finished] сделать равным нулем. 3. delete(result) - так? Нет. Это после использования. Код: plaintext 1. 2. Итак Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext Об этом и речь. Стиль плохой. Тебе надо будет не забывать, после вызова функции и использования результата очищать память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:25 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
AkhОб этом и речь. Стиль плохой. Тебе надо будет не забывать, после вызова функции и использования результата очищать память. Но Result у меня объявлена локально, я думал очищать память надо тоже в теле функции. Или можно и вне? А как тогда обратиться к локальной переменной? Или в качестве параметра в функцию добавить указатель на область памяти Result, а потом её очистить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:31 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
СИСАШАВот меня и мучал вопрос об очистке памяти. Память мы выделили только Result, значит и очищать надо только результ, а вот в какое "место" вставить очищение - мне не понятно Для функции strncpy передают блок памяти, причем те кто передает заранее должны побеспокоится, что памяти хватит. Почему бы тебе не сделать так же? Можно сделать с проверкой размера, если тебе его будут передавать. Тогда если не хватит памяти, то можешь вернуть ошибку или скопировать сколько влезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:34 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
СИСАША AkhОб этом и речь. Стиль плохой. Тебе надо будет не забывать, после вызова функции и использования результата очищать память. Но Result у меня объявлена локально, я думал очищать память надо тоже в теле функции. Или можно и вне? А как тогда обратиться к локальной переменной? Или в качестве параметра в функцию добавить указатель на область памяти Result, а потом её очистить? Разберись сначала. result у тебя локальная. Память у тебя глобальная. Ты возвращаешь локальную переменную. Что ты имеешь в результате? Ты имеешь значение указателя на данные, которые не в стеке а из кучи. Если бы они были из стека, то после выхода из функции ты их и использовать бы не мог. Значит ты имеешь все что надо - очищай глобальную память с указаением указателя на нее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:38 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
Akh СИСАШАВот меня и мучал вопрос об очистке памяти. Память мы выделили только Result, значит и очищать надо только результ, а вот в какое "место" вставить очищение - мне не понятно Для функции strncpy передают блок памяти, причем те кто передает заранее должны побеспокоится, что памяти хватит. Почему бы тебе не сделать так же? Можно сделать с проверкой размера, если тебе его будут передавать. Тогда если не хватит памяти, то можешь вернуть ошибку или скопировать сколько влезет. Для функции strncpy передают блок памяти - а как это сделать(или посоветуйте где прочитать). До меня без примеров туго доходит. И ещё хотел спросить - есть ли для BCB6 русский хелп, или для каких нить других версий? Я немного "туговат" в English ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:39 |
|
||
|
Просьба проверить
|
|||
|---|---|---|---|
|
#18+
СИСАША Akh СИСАШАВот меня и мучал вопрос об очистке памяти. Память мы выделили только Result, значит и очищать надо только результ, а вот в какое "место" вставить очищение - мне не понятно Для функции strncpy передают блок памяти, причем те кто передает заранее должны побеспокоится, что памяти хватит. Почему бы тебе не сделать так же? Можно сделать с проверкой размера, если тебе его будут передавать. Тогда если не хватит памяти, то можешь вернуть ошибку или скопировать сколько влезет. Для функции strncpy передают блок памяти - а как это сделать(или посоветуйте где прочитать). До меня без примеров туго доходит. И ещё хотел спросить - есть ли для BCB6 русский хелп, или для каких нить других версий? Я немного "туговат" в English Передай указатель на память так же как и передавал указатель на строку Код: plaintext 1. 2. 3. или с указанием размера Код: plaintext 1. 2. 3. 4. Функции strncpy, memcpy и тому подобные - это функции стандартной библиотеки С++. С ними надо знакомится в учебнике по С++ или по С (а не билдер). Раздел, что-то про строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34275631&tid=2029590]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 444ms |

| 0 / 0 |
