Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Вниз

stream1.read(stream2,size); почему не работает?   Найти похожие ветки 

 
self.name ©   (2008-08-02 01:12) [0]

добрый вечер, мастера.
знаю, что можно сделать stream2.copyfrom..., но интересует именно такая реализация, как в теме..подскажите, в чём загвоздка?


 
Поросенок Винни-Пух ©   (2008-08-02 01:20) [1]

в тебе загвоздка. хочешь странного.


 
Поросенок Винни-Пух ©   (2008-08-02 01:21) [2]

посмотри тип первого параметра для метода read и сравни с тем, что ты ему пытаешься подсунуть


 
sniknik ©   (2008-08-02 01:44) [3]

> stream1.read(stream2,size); почему не работает?
вообщето оно должно работать... и скорее всего работает.
другое дело, что ожидаешь ты от него (судя по дальнейшему) не того, что оно делает, а совсем другого.

> знаю, что можно сделать stream2.copyfrom...
по смыслу это совсем не тоже самое, что в заголовке.

> но интересует именно такая реализация
ага. хочу перейти дорогу, но не могу, потому, что иду вдоль нее, а не поперек... ???
а скажи зачем тебе именно такая реализация? почему не переходить поперек, если нужно переходить, а реализацию "вдоль" оставить тем кто желает по ней ездить...


 
KilkennyCat ©   (2008-08-02 01:44) [4]

установи position на нуль. а то мож ты хрен знает откуда читаешь.


 
Поросенок Винни-Пух ©   (2008-08-02 02:02) [5]

вообщето оно должно работать...

function Read(var Buffer; Count: Longint): Longint;

с чего это оно вдруг "должно работать" ?


 
Alucard   (2008-08-02 02:03) [6]

Stream - это класс, а методу нужен указатель на память, которой данный класс управляет, это свойство Memory.

stream1.read(stream2.Memory,size);


 
Поросенок Винни-Пух ©   (2008-08-02 02:04) [7]

требуется адрес, передается указатель да еще и по ссылке.
и вдруг чудесным образом "должно работать"


 
Поросенок Винни-Пух ©   (2008-08-02 02:05) [8]

а методу нужен указатель на память

адрес ему нужен, а не указатель


 
self.name ©   (2008-08-02 02:24) [9]

сделал надстройку над read, чтобы оно перед записью данных писало что это за данные и их размер...т.е. идет инфа(рекорд)+данные..а вот столкнулся с тем, что надобы и stream записать\считать...и не получается


 
Anatoly Podgoretsky ©   (2008-08-02 09:33) [10]

Да адрес передается в процедуру и работает, только не это ожидается.


 
sniknik ©   (2008-08-02 12:12) [11]

> что надобы и stream записать\считать...и не получается
так таки сам stream или данные которые он содержит?
вообщето когда так говорят подразумевают одно, но ты пытаешься(показываешь) разное но думаешь судя по всему, что это одно и тоже...

> и не получается
в чем это выражается? одно дело ошибка от вызова абстрактного метода, другое получение не тех данных что ожидаются... разные же вещи. а у тебя возможно и то и то в зависимости от скрываемых исходных данных.


 
Gamer   (2008-08-02 13:03) [12]


> так таки сам stream или данные которые он содержит?

всё таки хотелось бы данные, которые он содержит..


 
self.name ©   (2008-08-02 13:06) [13]

)))[12] пост от меня


 
sniknik ©   (2008-08-02 13:21) [14]

теперь вернемся к исходному вопросу
> stream1.read(stream2,size); почему не работает?
(мог бы уже и сам "допереть") а почему оно должно работать? (работа тут = ожидаемое тобой копирование данных стрима) если ты вместо нее пытаешься скопировать структуру его обьекта (данных в ней нет, только указатель на них).
ну вот почему?


 
self.name ©   (2008-08-02 13:28) [15]

прочёл. понял.
а как бы заставить его работать?


 
self.name ©   (2008-08-02 13:35) [16]

или проще, наверное, будет написать еще одну процедуру, которая будет делать CopyFrom..?


 
Сергей М. ©   (2008-08-02 13:47) [17]


> как бы заставить его работать?
>


Передать ему правильные параметры.

А с какого вдруг перепугу Read ? Ты самоделкин что ли ?

Есть же ReadBuffer, WriteBuffer - они же тебе, чуть что не так, обязаны хряснуть по макушке соотв.исключением)


 
self.name ©   (2008-08-02 14:11) [18]

ничего они не делают) ничем не стучали.
сделал CopyFrom - всё работает


 
Сергей М. ©   (2008-08-02 14:15) [19]

Мда ..

Печально я гляжу на наше ..


 
self.name ©   (2008-08-02 14:24) [20]

вот...незнаю, как подставить stream так, чтобы данные записались нормально
а в интернетеничего и не найти. потому и пришлось обойти так.


 
Сергей М. ©   (2008-08-02 14:49) [21]


> незнаю, как подставить stream так, чтобы данные записались
> нормально


А как они, по-твоему, записываются "ненормально" ?


 
self.name ©   (2008-08-02 15:02) [22]

так как я записал в теме. это ж выходит ненормально...как я понял.
после такого чтения вообще не могу обратиться к stream2


 
sniknik ©   (2008-08-02 15:14) [23]

> это ж выходит ненормально.
это нормально. абсолютно нормально. оно делает именно то для чего написано. но вот ты почемуто ждешь другого.

p.s.
имхо, автор безнадежен. тему можно закрывать. он так ничего и не понял, и не поймет судя по всему.
считает, что дело в стриме/методах, а не в нем/его дурости/написанной им абракадабре.

------------------------------------------
поросенок не мечтающий стать беконом, бесперспективен! © афоризмы какието.


 
self.name ©   (2008-08-02 15:49) [24]

:)можно


 
Сергей М. ©   (2008-08-02 17:47) [25]


> такого чтения вообще не могу обратиться к stream2


Что значит "не могу" ?

Тебе кто-то или что-то мешает ?


 
Amoeba ©   (2008-08-02 17:59) [26]


> self.name ©   (02.08.08 15:02) [22]

Свой код может предъявишь на обозрение?


 
Сергей М. ©   (2008-08-02 18:03) [27]


> может предъявишь


Как он тебе предъявит-то ?

Он же стесняется обратиться к стриму, мол, многоуважаемый стрим, разрешите Вас представить на обозрение)


 
Anatoly Podgoretsky ©   (2008-08-02 18:06) [28]

> Сергей М.  (02.08.2008 18:03:27)  [27]

А что других провайдеров, кроме Стрима нет?


 
self.name ©   (2008-08-02 18:32) [29]

 ToDataHeader = record
   Name: string[25];
   Size: integer;
 end;

...

function ReadData(var Buffer):int64;//return OldPosition
var
 mDataHeader:ToDataHeader;
begin
 Result:=f.Position;
 f.ReadBuffer(mDataHeader,SizeOf(mDataHeader));
 f.ReadBuffer(Buffer, mDataHeader.Size);
end;


вот оно..вообщем-то. f: TFIleStream - создан до вызова ReadData.

> Что значит "не могу" ?

обратиться к стриму не могу, потому что вылетает ошибка.


 
Сергей М. ©   (2008-08-02 18:36) [30]


> вылетает ошибка


Какая ? Куда и каким рейсом ?


 
self.name ©   (2008-08-02 18:45) [31]

> [30]
Access Violation


 
Palladin ©   (2008-08-02 18:46) [32]

да поди ерунду в параметре Buffer передает... как например в заголовке темы... нчм )


 
Сергей М. ©   (2008-08-02 18:49) [33]


> self.name ©   (02.08.08 18:45) [31]


см. [17], [32]


 
self.name ©   (2008-08-02 19:11) [34]

всё) всем спасибо. сделал
function CopyData(ToStream:TStream):int64;//return OldPosition
var
 mDataHeader:ToDataHeader;
begin
 Result:=fTEST.Position;
 fTEST.ReadBuffer(mDataHeader,SizeOf(mDataHeader));
 ToStream.CopyFrom(fTEST,mDataHeader.Size);
end;

работает.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.049 c
15-1216701537
Sergey13
2008-07-22 08:38
2008.09.14
СУБД Ред База Данных. Никто не пробовал? Как впечатления?


2-1217955652
Alex_C
2008-08-05 21:00
2008.09.14
Мелькание Hint при нажатой клавише Ctrl


3-1205998904
denmin
2008-03-20 10:41
2008.09.14
Не постятся данные в PostgreSQL.


2-1217606385
InsanI
2008-08-01 19:59
2008.09.14
Ввод текста в другой программе


15-1216815562
oldman
2008-07-23 16:19
2008.09.14
А у меня завтра дочери исполняется шесть лет!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский