![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Простой вопрос новичка про указатели [D7, Win2k, WinXP]
demidoff © (2004-09-21 15:17:00)Добрый день, вот только начинаю с указателями разбираться, вот интересно теперь, у меня есть указатель и размер памяти который нужно считать. И как мне взять и считать к примеру в Мемо все что есть в этом куске памяти используя этот указатель и размер.
Вот что есть, но это походу добавляет в Мемо сам адрес указателя а не содежимоей памяти, а просто необходимо прочесть содержимое:
procedure TForm1.RcvdData(Sender: TObject; Buffer: Pointer;
Len: Integer);
begin
Memo1.Lines.Add(Pchar(Buffer)^)
end;
наверно вопрос глупый но вот пока мне это не понять, не судите строго, просто подскажите или покажите новичку ;)
demidoff (2004-09-21 15:31:00) [1]А не, Всё) работает)
спасибо огромное
KSergey (2004-09-21 15:31:00) [2]> [3] demidoff (21.09.04 15:28)
> Чтото не выходит, при отладке вижу длину Len = 47
> а после s:= Pchar(Buffer) s показывает равно ''
А в Buffer что лежит? Там подика первый же быйт - 0? ;)
Вообще, я пожалуй не совсем корректный код написал, нет смысла в нем делать SetLength. Тогла уж надо побайстно запихивать - это будет правильно.
А вообще ключевой был вопрос -
> В буфере текстовые данные надеюсь?
demidoff (2004-09-21 15:28:00) [3]Чтото не выходит, при отладке вижу длину Len = 47
а после s:= Pchar(Buffer) s показывает равно '' то есть ничему и ничего не добавляет в мемо. ((
KSergey (2004-09-21 15:23:00) [4]Хотя, конечно, если придираться - то в буфере в конце должен быть ноль зыписан, иначе не понятно какой блины кусок читать.
Либо. чтобы совсем правильно, если в исходном буфере этого нюля нет - то выделить новый, в конец дописать этот ноль. При этом буфером может быть что угодно.
Сделать можно даже так:
s: String
SetLength(s, len);
s := Pchar(Buffer); // вроде так должно получиться, я ничего не путаю?
Memo1.Lines.Add(s);
Проверять код лень
KSergey (2004-09-21 15:20:00) [5]В буфере текстовые данные надеюсь? А то ведь хрен знает что получится...
А так - ну вроде правильно, только ^ убрать