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

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

Как в TStream записать строку


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

@!!ex ©   (2009-07-10 21:29:00) 

Есть две строки. динамической длины и фиксированной:
Str1:string[4];
Str2:string;

Мне нужно эти строки записать в Stream.
Проблема в тмо, что надо передавать не указатель, а буффер... и ЧТО туда передавать?
по логике Str1[1], Str2[1], ан нет, нифига...


Anatoly Podgoretsky   (2009-07-11 12:00:00) [21]


> @!!ex ©   (11.07.09 11:49) [17]
> > [16] Anatoly Podgoretsky ©   (11.07.09 11:33)
>
> да это разве громко?
>
> как вы передадите nil в такую функцию, расскажите неучу:
>
> procedure someFunc(var i:integer);

Ты смеешься, какой еще NIL если параметр integer


Anatoly Podgoretsky   (2009-07-11 12:00:00) [22]

> @!!ex  (11.07.2009 11:55:20)  [20]

Ты не путай NULL с NULL и NULL c nil


turbouser   (2009-07-11 11:56:00) [23]

:)


@!!ex   (2009-07-11 11:55:00) [24]

> [18] Игорь Шевченко ©   (11.07.09 11:53)


> [19] {RASkov} ©   (11.07.09 11:53)


Потому что в WinAPI функция МОЖЕТ принимать, NULL в качестве параметра. А разработчики из Борланда, этот момент из виду упустили. Сейчас я точно не вспомню в каких функциях это встречается, но то что я на это натыкался - факт.


{RASkov}   (2009-07-11 11:53:00) [25]

> [17] @!!ex ©   (11.07.09 11:49)

Эта функция неможет принимать nil в параметре


Игорь Шевченко   (2009-07-11 11:53:00) [26]

@!!ex ©   (11.07.09 11:49) [17]

А зачем в нее передавать nil ?


@!!ex   (2009-07-11 11:49:00) [27]

> [16] Anatoly Podgoretsky ©   (11.07.09 11:33)

да это разве громко?

как вы передадите nil в такую функцию, расскажите неучу:
procedure someFunc(var i:integer);


Anatoly Podgoretsky   (2009-07-11 11:33:00) [28]

И за название переменной, и за переменную, и за someFunc(null^), и за someFunc(nil) можно убивать и послать к изучению языка, который ты извчать не хочешь, но научился громко кричать.


turbouser   (2009-07-11 11:17:00) [29]


> @!!ex ©   (11.07.09 11:12) [14]
>
> > [13] turbouser ©   (11.07.09 11:05)
>
> я тоже так думаю.
> someFunc(nil) куда логичнее.

Я вообще-то имел ввиду название переменной


@!!ex   (2009-07-11 11:12:00) [30]

> [13] turbouser ©   (11.07.09 11:05)

я тоже так думаю.
someFunc(nil) куда логичнее. Но нет, надо костылей в виде var/const параметров навешать.


turbouser   (2009-07-11 11:05:00) [31]

null:pointer;
убивать за такое


@!!ex   (2009-07-11 10:54:00) [32]

> [11] Юрий Зотов ©   (11.07.09 10:44)

Я согласен разбираться в деталях языка...
но ситуации вида:
var
 null:pointer;
begin
 null:=nil;
 someFunc(null^);
end;

Это же бред. Умники переводящие someFunc не удосужились прочитать доку и понять, что она может принимать NULL и сделали параметр const'ом. Ну и нафиг это нужно?

Хотя уже спорили об этом.

P.S.
Специфику языка мне почти не имеет смысл изучать, потому что нужно писать код легко портируемый. Это конечно усложняет написание, некоторые фишки в дельфи очень удобны. С другой стороны не приходитсья заморачиваться с "изысками".


Юрий Зотов   (2009-07-11 10:44:00) [33]

> @!!ex ©

Специально для тех, кто не хочет разбираться в деталях языка:
StrStream := TStringStream.Create(строка);
и можно ни о чем не заботиться.

Но лучше все-таки в деталях языка разобраться. Оно потом пригодится.


@!!ex   (2009-07-11 10:18:00) [34]

> [9] жж   (11.07.09 10:14)

Спасибо, буду знать.


жж   (2009-07-11 10:14:00) [35]


> ВСе было решено извращениями вот nакого вида:
> Stream.Read((@Text[1])^,Length);


Не так
а вот так:

Stream.Read Buffer(Text[1], Length(Text))
причем сначала надо отдельным полем записать \ считать длину, чтобы перел началом чтения выставить SetLength
это для динамической строки

для статической можно просто :
Stream.ReadBuffer(Texе, SizeOf(Text))


@!!ex   (2009-07-11 09:20:00) [36]

> [6] Германн ©   (11.07.09 00:55)
> И тут передаётся указатель. Ne's pa?

Через жопу.


> Проблема в непонимании того, что нужно хранить и как потом
> восстанавливать.

Спасибо что объяснили. А я то идиот, думал что протокол обмена данными уже разработан. Ан нет, оказываеться яне знаю как хранить и как восстанавливать.


> [6] Германн ©   (11.07.09 00:55)
> Большинство на форуме после такого высказывания признает
> тебя больным. Ну или (в моём стиле) трешником.

Вы впраые думать обо мне что считаете нужным.


> [7] Германн ©   (11.07.09 01:03)
> И кстати. Не пора ли перейти от слов к делу?

Уже не порка.
ВСе было решено извращениями вот nакого вида:
Stream.Read((@Text[1])^,Length);


Германн   (2009-07-11 01:03:00) [37]


> Как в TStream записать строку
>
> @!!ex ©   (10.07.09 21:29)  

И кстати. Не пора ли перейти от слов к делу?

> Мне нужно эти строки записать в Stream.
> Проблема в тмо, что надо передавать не указатель, а буффер.
> .. и ЧТО туда передавать?
> по логике Str1[1], Str2[1], ан нет, нифига...

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


Германн   (2009-07-11 00:55:00) [38]


> @!!ex ©   (11.07.09 00:50) [5]
>
> > [2] turbouser ©   (10.07.09 22:36)
>
> Все просто. я как белый человек привык в функции записи/чтения
> передавать указатели. А тут гребанный var\const.
>

И тут передаётся указатель. Ne's pa?

> > [3] palva ©   (10.07.09 23:57)
>
> Как хранить я знаю. сначала идет длина, потом строка, либо
> если фиксированный размер строки, то без длины.
> Проблема в том, что эта фигня не хочет реагировать на строку
> переданную в качестве буффера.
>

Проблема в непонимании того, что нужно хранить и как потом восстанавливать.

> > [4] Amoeba ©   (11.07.09 00:24)
>
> Могу развеять ваши сомнения. Я полный ноль в понимании var
> и const и считаю их идиотским изобретение больных на голову
> упрощенцев(не опечатка).

Большинство на форуме после такого высказывания признает тебя больным. Ну или (в моём стиле) трешником.


@!!ex   (2009-07-11 00:50:00) [39]

> [2] turbouser ©   (10.07.09 22:36)

Все просто. я как белый человек привык в функции записи/чтения передавать указатели. А тут гребанный var\const.

> [3] palva ©   (10.07.09 23:57)

Как хранить я знаю. сначала идет длина, потом строка, либо если фиксированный размер строки, то без длины.
Проблема в том, что эта фигня не хочет реагировать на строку переданную в качестве буффера.

> [4] Amoeba ©   (11.07.09 00:24)

Могу развеять ваши сомнения. Я полный ноль в понимании var и const и считаю их идиотским изобретение больных на голову упрощенцев(не опечатка).


Amoeba   (2009-07-11 00:24:00) [40]


> @!!ex ©   (10.07.09 21:29)
>
> Есть две строки. динамической длины и фиксированной:
> Мне нужно эти строки записать в Stream.
> Проблема в тмо, что надо передавать не указатель, а буффер.
> .. и ЧТО туда передавать?

Не слабо! Просто изумляете!
Вы, молодой человек, частенько такие вопросы ухитряетесь задать, что и не знаешь, что думать о вашей квалификации. Прямо хоть стой, хоть падай.

А ведь задача элементарнейшая. Как-то и неприлично давать две строчки простейшего готового кода.

> по логике Str1[1], Str2[1], ан нет, нифига...

А здесь Ваш код в студию!


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

Наверх

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