Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перекинуть данные из переменной в структуру (record)


Страницы:   1 2 3

Ingwar ©   (2006-10-26 12:47:00) 

Задали такую задачку: Есть переменная типа string и есть структура(record).
Нужно перекинуть данные из переменной в структуру. Можно перекинуть по байтам или чем-то подобным, но возможно есть какая-то функции для таких операций. Подскажите Мастера! Спасибо.


Ketmar   (2006-10-26 16:21:00) [21]

мда... "гляжу в книгу, вижу фигу" (ц)
[4], [9].
плюс: ReadBuffer(buf...)??? "здравствуй, мир на четвереньках" (ц)...


Ingwar   (2006-10-26 16:20:00) [22]

Забыл одну строчку в коде
 len := AData.Size;


Anatoly Podgoretsky   (2006-10-26 16:20:00) [23]

А я знаю, но тебе нескажу, поскольку это секретно.


Ingwar   (2006-10-26 16:19:00) [24]

ТО Ketmar: Понял

Ошибка:
Project D:\Test.exe faulted with message: 'access violation at  0x4f4b5320: read of address 0xf4fb5320'. Process Stopped. Use Step of Run to continue.


procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
 ABinding: TIdSocketHandle);
var
 buf: string;
 len : int64;
begin
   AData.ReadBuffer(buf, len);
   CopyMemory(@Struct, PChar(buf), 401); //тут выскакивает ошибка
   CopyMemory(@Stroka, @buf[402], (len-401));
end;


Struct - структура описаная через record
Stroka : string;


Сергей М.   (2006-10-26 16:14:00) [25]


> Похоже препод хочет деньги на мне заработать


Ну это, согласись, есть твоя личная половая драма)


> Ему нужна прога для каких-то соревнований


Остерегайся - он может оказаться извращенцем)


> Суть такова, что по UDP получаются пакетики в переменную
> типа стринг


Эт чего, ТЗ такое что ли ?!


> Это делается из-за того, что начало пакета фиксированое,
>  а вот дальнейшая часть может меняться =( Поэтому не могу
> сразу считать в структуру.
>
> ЧТо-то в этом роде я понял из разговора с преподом


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

На сей момент из твоих объяснений все изложенное выглядит как галиматьища неесусветная


Ketmar   (2006-10-26 16:10:00) [26]

>[21] Ingwar(c) 26-Oct-2006, 16:07
>что по UDP получаются пакетики в переменную типа стринг, а
>потом надо перекинуть в структуру и переменную стринг...
>Это делается из-за того, что начало пакета фиксированое, а
>вот дальнейшая часть может меняться =( Поэтому не могу
>сразу считать в структуру.
не того "препод" выбрал, ой, не того. его ж потом претензиями замучают.

зыж не так это пишется. НЕ ТАК! что за манера у людей -- спрашивать не "помогите с направлением для задачи XXX", а "надо YYY". причём это YYY -- чистые лсд-шные измышлизмы автора, не имеющие отношения к самой задаче...


Reindeer Moss Eater   (2006-10-26 16:10:00) [27]

Да препод реально подымется получив эту процедуру копирования.
не иначе хочет новую тачку купить.


Ingwar   (2006-10-26 16:07:00) [28]

Похоже препод хочет деньги на мне заработать =( Ему нужна прога для каких-то соревнований по гандболу... Суть такова, что по UDP получаются пакетики в переменную типа стринг, а потом надо перекинуть в структуру и переменную стринг...
Это делается из-за того, что начало пакета фиксированое, а вот дальнейшая часть может меняться =( Поэтому не могу сразу считать в структуру.

ЧТо-то в этом роде я понял из разговора с преподом


Ketmar   (2006-10-26 16:05:00) [29]

>[19] Ingwar(c) 26-Oct-2006, 16:02
>При попытке скопировать структуру вылетает по ошибке =(
ошибка в 17-й строке. или в DNA.


Ingwar   (2006-10-26 16:02:00) [30]

При попытке скопировать структуру вылетает по ошибке =(


Сергей М.   (2006-10-26 13:32:00) [31]


> Это у препода надо спросить


У вас там что, спецбригада по запутыванию вражеской разведки ?)


Anatoly Podgoretsky   (2006-10-26 13:32:00) [32]

Ну так чтобы и дальне не тормозить, просто не заходи в ветку или давай конкретные данные.

Кстати Сусанин завел поляков не потому что он этого хотел, а потому что и сам не знал дороги :-)


Anatoly Podgoretsky   (2006-10-26 13:26:00) [33]

Сусанин?
Веду, но не скажу куда.
Сообственно у нас нет проблем, у нас все копируется.


Ingwar   (2006-10-26 13:25:00) [34]

Да у меня D7. Это у препода надо спросить... Как раз счаз уезжаю в институт...


Ingwar   (2006-10-26 13:21:00) [35]

Ответ на [11]: Я уже сам понял, что стормозил с таким вопросом... Просто вначале спросил и отослал, а потом понял, что тормознул =)


Сергей М.   (2006-10-26 13:20:00) [36]


> у меня нет никакой инфы про CopyMemory


Есть.
Введи модель поиска вручную.
Если у тебя D7, то подобный "глюк" имеет место быть.


> Слишком длинная структура


Ты лучше объясни, каким образом структурированные данные у тебя оказались в буфере строковой переменной ...


Ingwar   (2006-10-26 13:16:00) [37]

Кстати, по F1 у меня нет никакой инфы про CopyMemory... Странно.

ТО Anatoly Podgoretsky: Слишком длинная структура, а скопировать мне счаз её неоткуда... Но по памяти, там что связанное с соревнованиями по гандболу... Составы команд, названия команд, имена судей, время матча, кто забил и т.д.


Сергей М.   (2006-10-26 13:13:00) [38]


> Думаешь наоборот есть разница?


Думаю что автору следует самому об этом подумать)


Anatoly Podgoretsky   (2006-10-26 13:11:00) [39]


> Нет, структура на 600 байт. В основном разнообразные массивы
> char, есть так же типы byte.

Слова, слова,
Сестра имя, имя скажи


Anatoly Podgoretsky   (2006-10-26 13:10:00) [40]


> Если, скажем,  
>
> Length(MyString) = 4
> SizeOf(MyRecord) = 3
>
> куда, спрашивается, девать разницу ?)

Думаешь наоборот есть разница?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо