|
Вопрос # 4 968/ вопрос закрыт / |
|
Здравствуйте, уважаемые эксперты!
RAD 2010 Delphi ругаеться на строчку
MemStream.CopyFrom(AData, AData);
как исправить?
Приложение: Переключить в обычный режим- procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
- AData: TBytes; ABinding: TIdSocketHandle);
- begin
- MemStream:= TMemoryStream.Create;
- MemStream.CopyFrom(AData, AData);
- MemStream.SaveToFile('C:\logo.jpg');
- form11.Image1.Picture.LoadFromFile('C:\logo.jpg');
- if form11.Showing then
- begin
- serversocket1.Socket.Connections[UserList.ItemIndex].SendText('ikr');
- end;
- MemStream.Free;
- end;
 |
Вопрос задал: Dimitriy (статус: Посетитель)
Вопрос отправлен: 27 января 2011, 04:16
Состояние вопроса: закрыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: DNK
Здравствуйте, Dimitriy!
Не разу не работал в Delphi2010, но рискну предположить. Дело в том, что метод CopyFrom в качестве параметров требует другой поток и длинну копируемых данных, а AData - это динамический массив. И зачем гонять данные в памяти туда-сюда, сохраняй прямо в файл. FStream := TFileStream.Create('C:\logo.jpg', fmOpenWrite);
try
FStream.WriteBuffer(AData[0], Length(AData));
finally
FStream.Free;
end;
 |
Ответ отправил: DNK (статус: Студент)
Время отправки: 27 января 2011, 20:17
Оценка за ответ: 5
Комментарий к оценке: Всем огромное спасибо, заработало =)
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 27 января 2011, 20:54; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 27 января 2011, 08:28 [#1]:
Совершенно правильно ругается. Ты бы, хоть, посмотрел в хэлпе, какие параметры у метода TStream.CopyFrom.
function CopyFrom(Source: TStream; Count: Int64): Int64;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
DNK (статус: Студент), 27 января 2011, 08:34 [#2]:
Не разу не работал в Delphi2010, но рискну предположить. Дело в том, что метод CopyFrom в качестве параметров требует другой поток и длинну копируемых данных, а AData - это динамический массив. И зачем гонять данные в памяти туда-сюда, сохраняй прямо в файл.FStream := TFileStream.Create('C:\logo.jpg', fmOpenWrite);
try
for i:=0 to Length(AData) - 1 do
FStream.WriteBuffer(AData[i], 1);
finally
FStream.Free;
end;
"Digital Networked Knight"
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 08:45 [#3]:
Цитата (DNK):
FStream := TFileStream.Create('C:\logo.jpg', fmOpenWrite);
try
for i:=0 to Length(AData) - 1 do
FStream.WriteBuffer(AData[i], 1);
finally
FStream.Free;
end;
За такой код надо руки отрывать без суда и следствия!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
DNK (статус: Студент), 27 января 2011, 09:13 [#4]:
min@y™: Аргументируй
"Digital Networked Knight"
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 09:26 [#5]:
Цитата (DNK):
Аргументируй
Ну, раз ты сам не допёр, то пожалуйста.
Вмето побайтной (!!!) записи буфера в файл нормальные люди пишут весь буфер целиком без всяких циклов:
FStream.WriteBuffer(AData[0], Length(AData));
А теперь подумай, какой код будет работать быстрее: твой или мой?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
DNK (статус: Студент), 27 января 2011, 20:16 [#6]:
min@y™: Да ты фашист!
"Digital Networked Knight"
|
|
min@y™ (статус: Доктор наук), 27 января 2011, 20:54 [#7]:
Цитата (DNK):
Да ты фашист!
Мой дед, Александр Иванович Скороходов (1923-1999) всю войну прошёл, был коммандиром экипажа бомбардировщика. Моя бабка Валентина Яковлевна Скороходова (1926-2008) - ленинградская блокадница, которая до самой смерти курицу ела вместе с костями. Двое из четырёх их детей умерли в младенчестве в в годы войны. Все их ордена и медали хранятся у меня до сих пор, и я передам их своим сыновьям по наследству.
За "фашиста" не задумываясь буду бить ногами, пока силы не иссякнут.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
27 января 2011, 22:04: Вопрос закрыт (решение принял Ерёмин А.А.): Война. Автор вопроса, думаю, ответ на свой вопрос получил.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|