![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в TStream записать строку
@!!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], ан нет, нифига...
А здесь Ваш код в студию!