![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как переписать данные из динамического массива в memorystream? [D7, WinXP]
marantz85 © (2009-06-22 18:34:00)Удалено модератором
Примечание: спам
KilkennyCat (2009-06-23 22:13:00) [1]
> Сергей М. © (23.06.09 22:09) [23]
А смысл? Он просто не нашел у массива savetofile, и теперь извращается. Потом будет реализовывать load, и будет еще страннее...
Сергей М. (2009-06-23 22:09:00) [2]
> у меня появилась следующая проблема
У тебя не проблема - у тебя геморрой, который даже к 22-му посту мешает тебе продемонстрировать местной общественности декларациюидентификатора Data)
marantz85 (2009-06-23 21:57:00) [3]Это количество байт для записи в memorystream. Видимо большое значение.
Когда 524288 всё работает нормально.
Германн (2009-06-23 21:47:00) [4]
> marantz85 (23.06.09 21:37) [20]
>
> Спасибо, помогло! Теперь другая проблема.
> SizeOf(Double)* Length(Data[0])у меня = 4194304
Это что за хрень?
marantz85 (2009-06-23 21:37:00) [5]Спасибо, помогло! Теперь другая проблема.
SizeOf(Double)*Length(Data[0]) у меня = 4194304
С маленькими значениями получается, а с таким выдаёт ошибку!
KilkennyCat (2009-06-23 21:30:00) [6]А... почитал другую ветку... а я ведь сразу понял, что конечным итогом является желание сохранить в файл... К;огда захочется на нем нарисовать, то спросят, как сохранить массив в ТБитМап...
Германн (2009-06-23 21:24:00) [7]
> marantz85 (23.06.09 17:56) [14]
>
> Delphi ругается на строку ms.Write! (если пытаться закинуть
> целиком)
Пиши так:
> ms.Write(Data [0],SizeOf(Double)*Length(Data));
тогда ругаться не будет.
Игорь Шевченко (2009-06-23 19:46:00) [8]
> ms.SaveToFile(fn);
ms.Position := 0;
ms.SaveToFile(fn);
Медвежонок Пятачок (2009-06-23 18:22:00) [9]либо текущая позиция стрима не та что надо
Медвежонок Пятачок (2009-06-23 18:13:00) [10]потому что не смотришь на типы параметров у рида
marantz85 (2009-06-23 17:56:00) [11]Delphi ругается на строку ms.Write! (если пытаться закинуть целиком)
В общем я пробывал целиком и по элементно. Когда работает поэлементно, код выполняется нормально, но при обратном преобразование из memorystream в массив пишутся нули, вместо значений. И я не понимаю почему. Вот...
Германн (2009-06-23 00:27:00) [12]
> marantz85 (22.06.09 20:50) [9]
>
> Народ, суть не в том какой массив, а почему значения не
> пишутся в memory stream. Я пытался засунуть туда массив
> целиком, но Delphi ругается на ошибочное обращение к памяти.
>
Если "Delphi ругается на ошибочное обращение к памяти", то нужно приводить саму ругань дословно и приводить сведения на какой строке ругается.
P.S. Знаю на 99.9% на какого типа строке. Но в "Основной" об этом стыдно говорить.
Германн (2009-06-23 00:23:00) [13]
> marantz85 (22.06.09 20:50) [9]
>
> Народ, суть не в том какой массив, а почему значения не
> пишутся в memory stream. Я пытался засунуть туда массив
> целиком, но Delphi ругается на ошибочное обращение к памяти.
>
Если
Медвежонок Пятачок (2009-06-22 21:59:00) [14]array of double вдруг перестал быть непрерывным куском памяти?
Anatoly Podgoretsky (2009-06-22 20:55:00) [15]> Медвежонок Пятачок (22.06.2009 20:05:08) [8]
Какая разница - для понимания, что говорить о непрерывности можно только с определенными натяжками, а в данном случае и это не натянуть. Никакого непрерывного блока памяти не наблюдается.
marantz85 (2009-06-22 20:50:00) [16]Народ, суть не в том какой массив, а почему значения не пишутся в memory stream. Я пытался засунуть туда массив целиком, но Delphi ругается на ошибочное обращение к памяти.
Медвежонок Пятачок (2009-06-22 20:05:00) [17]у него не строки а Double
Anatoly Podgoretsky (2009-06-22 18:58:00) [18]Да нету никаких "строк", есть массив, содержащий другие массивы. А другие массивы также могут быть не простой структуры, например строки
Медвежонок Пятачок (2009-06-22 18:50:00) [19]ну хорошо.
каждая строка это непрерывный кусой памяти.
Anatoly Podgoretsky (2009-06-22 18:49:00) [20]
> двумерный динамический массив даблов это непрерывный кусок
> памяти.
Никогда таким не являлся, это вообще то два разных массива, массив массивов, и ни о каком куске памяти говорить не приходится.