|
|
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Пример типов. Код: pascal 1. Код: pascal 1. 2. 3. 4. 5. При попытке задать значения - увеличить (SetLength) вылетает ошибка Код: pascal 1. 2. 3. 4. В чём зарыт крот ? ... Вроде, по логике мы должны получить указатель на массив байт, и выделить там память ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 23:50:54 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
НяшикВ чём зарыт крот ? В том, что эти типы - вовсе не то, что ты о них думаешь. Прочитай в документации о их истинной сущности. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 00:02:41 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВ том, что эти типы - вовсе не то, что ты о них думаешь. Прочитай в документации о их истинной сущности. В документации на F1 написано. По этому у меня нету повода думать, что это не тоже самое что и a:string; Is a pointer to a String. PString is a pointer to a String Можно на вашу документацию ?? Кстати, это работает как и ожидается Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 00:11:18 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Кстати, вот ещё странное поведение.. Вот так, он выделит память, и запишет всё 12345 в переменную str типа PString как мы можем видеть в отладчике Код: pascal 1. 2. 3. 4. 5. 6. 7. Но если мы изменим последнюю строку на Код: pascal 1. То при выделение памяти - SetLength он нас кинет на CMP [EAX-skew].StrRec.refCnt,1 // !!! MT safety и снова AV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 00:18:24 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Вот так работает адекватно Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 01:28:44 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Няшик, по логике мы должны получить указатель на массив байт,и где твой 'на' ? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 02:01:21 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Няшик, так чего добиться-то хочешь? Из твоего потока сознания это не очевидно, всё в кучу смешал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:22:58 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
автортак чего добиться-то хочешь? Наверное, чтобы AV возникал гораздо чаще. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 10:16:43 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
НяшикВ документации на F1 написано. По этому у меня нету повода думать, что это не тоже самое что и a:string; Is a pointer to a String. PString is a pointer to a String Да, но знаешь ли ты что такое String? А это (сурпрайз!) таки тоже поинтер. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:25:34 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Bred eFeM, Либо New/Dispose, либо GetMem+Initialize/Finalize+FreeMem ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 13:43:20 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Я в общем делаю универсальный бокс контейнер, и сразу же нашёл решения на свой вопрос.. Просто стало интересно чего это он мне ошибку то выдаёт.. А остановился на на функции _UStrAsg которая умеет выделять память, а так же увеличивать счётчик на переменную и помещать новый указатель на существующую. Вот это работает адекватно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 14:34:48 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
НяшикЯ в общем делаю универсальный бокс контейнер Variant уже давно сделали - вполне универсальный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 14:37:17 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
НяшикВот это работает адекватно Нет, не работает. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 14:41:11 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
schiНяшикЯ в общем делаю универсальный бокс контейнер Variant уже давно сделали - вполне универсальный Медленный, непонятный. И нафиг не нужный. Мой поддерживает все типы стандартные Код: pascal 1. 2. 3. jmp_originalНяшикВот это работает адекватно Нет, не работает. ))) Работает, прекрасно отдаёт текст если сделать Код: pascal 1. Уже загружал туда файлик длинной 1 413 720 символов, используя как буффер. И всё отработало отлично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 14:50:43 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Няшик, загрузись матчастью: http://www.transl-gunsmoker.ru/2009/09/blog-post.html#references http://www.transl-gunsmoker.ru/2009/09/pchars.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 14:54:14 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
НяшикИ всё отработало отлично Если что-то работает - это ещё не значит, что это работает правильно . По написанному тобой коду видно, что ты не понимаешь, что ты делаешь, а программируешь методом тыка. Ничего путного на выходе получиться не может, даже если тебе кажется иначе. Подтяни немного теорию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 14:57:18 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
GunSmokerНяшикИ всё отработало отлично Если что-то работает - это ещё не значит, что это работает правильно . По написанному тобой коду видно, что ты не понимаешь, что ты делаешь, а программируешь методом тыка. Ничего путного на выходе получиться не может, даже если тебе кажется иначе. Подтяни немного теорию. Ну от счастья и методом тыка, только я заранее изучаю исходники самого дельфи, и прекрасно вижу что и там это всё используется К примеру из функции _CopyRecord Код: pascal 1. 2. 3. 4. 5. Так как я не передаю указатели, мне не нужно делать смещения ^ ... По этому я сразу и пишу UnicodeString ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 15:02:34 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Няшик> Медленный, непонятный. И нафиг не нужный. Мой поддерживает все типы стандартные это что, SOFT FOR YOU трусы сменил шо ле? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 15:18:21 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Няшикschiпропущено... Variant уже давно сделали - вполне универсальный Медленный, непонятный. И нафиг не нужный. Умного учить - только портить. Let it float by itself :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 15:27:10 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
МимопроходящийНяшик> Медленный, непонятный. И нафиг не нужный. Мой поддерживает все типы стандартные это что, SOFT FOR YOU трусы сменил шо ле? Нет. Мне от моего контейнера нужны чётко поставленные задачи, а именно - получение конкретного значения с возможностью преобразования автоматически исходя из типа. А так - же, конвертирование текущего значения в N тип. Так же, нужно учитывать расход памяти на контейнер, и учитывать то - что он будет вызывать не один раз за всю жизнь программы (А это значит, он должен максимально быстро уметь орудовать текущими значениями во всех смыслах.) Следовательно, если будут утечки памяти, они будут обнаружены сразу - же. На данный момент я добился того, что упакованный контейнер весит 11 байт по SizeOf когда тот же zval контейнер от PHP держит 16 байт Мой контейнер более многофункционален и предоставляет лёгкий интерфейс что позволит вызывать методы на других языках - спокойно без всяких муссоров и так далее.. Что принесёт разработку дополнительных расширений. без каких либо затрад на изучения мокросов и.т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 15:30:45 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Няшик> Нет.таки да. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 15:35:18 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
МимопроходящийНяшик> Нет.таки да. Ну что можно сказать о людях, которые судят по почерку в интернете .... Пусть админята ip'шки сверят на сякий пожарный... А то, ай - я по почерку похож... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 15:39:29 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
Няшикя заранее изучаю исходники самого дельфи, и прекрасно вижу что и там это всё используется Упражнение: обоснуй, что делает вот эта строчка: Код: pascal 1. и чем: Код: pascal 1. отличается от: Код: pascal 1. в предположении, что Value у тебя - строка, иначе - от: Код: pascal 1. Ну и чтобы два раза не вставать: почему некоторые процедуры в System начинаются на '_'. А также, где выделяется память для str в этом коде: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 17:17:39 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Bred eFeM, Либо New/Dispose, либо GetMem+Initialize/Finalize+FreeMemЭто для ТС-а было (чтобы магия компилятора не скрывала суть происходящего), но ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 17:44:31 |
|
||
|
AV Указатель на массив байт
|
|||
|---|---|---|---|
|
#18+
GunSmoker, смеёшься ???... GunSmokerи чем: Код: pascal 1. отличается от: Код: pascal 1. НяшикА остановился на на функции _UStrAsg которая умеет выделять память, а так же увеличивать счётчик на переменную и помещать новый указатель на существующую. GunSmokerУпражнение: обоснуй, что делает вот эта строчка: Код: pascal 1. Что бы понять, что она делает - надо посмотреть реализацию _LStrAsg Она берёт адрес Код: pascal 1. Если предварительно не выделить, код рухнет (Сам должен понимать) В выделенную область пишется информацию структуры PStrRec .... GunSmokerНу и чтобы два раза не вставать: почему некоторые процедуры в System начинаются на '_'. А также, где выделяется память для str в этом коде: Код: pascal 1. Хз почему - но я вынес себе нужный функционал. Выделение идёт опять же в функции UStrAsg Которая между прочим - смотрит, если существует переменная с текстом - копирует на неё ссылку - .. а если нет, выделяет память Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 18:43:09 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39459890&tid=2042241]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
211ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 484ms |

| 0 / 0 |
