Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизЗаписать WideString строку Найти похожие ветки
← →
Ёжик (2007-04-22 04:42) [0]Может я чего-то не понимаю, но не получается.
Записываемtype
TServer = packed record
edServer : WideString;
end;
var
F : File;
Server_ : TServer;
begin
{$I-}
AssignFile (F, "Config.INI");
Rewrite (F, 1);
if IOResult <> 0 then exit;
FillChar (Server_, SizeOf (Server_), 0);
Server_.edServer := edServer;
try
BlockWrite (F, Server_, SizeOf (TServer));
Finally
CloseFile (F);
end;
{$I+}
Пытаемся прочитатьtype
TServer = packed record
edServer : WideString;
end;
var
F : File;
Server_ : TServer;
begin
{$I-}
AssignFile (F, "Config.INI");
Reset (F, 1);
If IOResult <> 0 then exit;
FillChar (Server_, SizeOf (Server_), 0);
try
BlockRead (F, Server_, SizeOf (TServer));
//edServer := Server_.edServer;
Finally
CloseFile (F);
end;
{$I+}
← →
Ёжик (2007-04-22 04:44) [1]На закоменченной строке выпадает ошибка - мол, что-то с доступом к памяти. Да, дело происходит в dll.
← →
sniknik © (2007-04-22 10:37) [2]TServer = packed record
edServer : WideString; //вот это переменная указатель на строку, а не сами ее данные включенные в рекорд
end;
FillChar (Server_, SizeOf (Server_), 0); //вот это ты очистил указатель
BlockRead (F, Server_, SizeOf (TServer)); //это записал указатель левым какимто значением (то что записано раньше в другой программе/тойже еще раз запущенной уже не действительно)
//edServer := Server_.edServer; //ну еще б ей здесь не валиться, пытаешся передать строку с неизвестно чего, а строки то и нет вообще (посмотри в файле блокнотом что у тебя записывается...)
почитай про работу с текстовыми файлами, и вообще файлами, про TFileStream например.
← →
Ёжик (2007-04-22 15:16) [3]WideString - указатель на строку? Как же быть?
Мне не нужен текстовый файл.
← →
_Аноним (2007-04-22 15:25) [4]
> WideString - указатель на строку? Как же быть?
Объяви еще как shortstring
← →
Desdechado © (2007-04-22 16:18) [5]Зачем упакованная запись на 1 поле? И почему это поле безразмерное?
← →
Leonid Troyanovsky © (2007-04-22 17:23) [6]
> Desdechado © (22.04.07 16:18) [5]
> Зачем упакованная запись на 1 поле?
И, вообще, зачем нужна запись на 1 поле.
--
Regards, LVT.
← →
_Аноним (2007-04-22 17:51) [7]
> И, вообще, зачем нужна запись на 1 поле.
Я например делал для того, чтобы использовать методы записи.
Здесь, наверно, не весь код представлен
← →
{RASkov} (2007-04-22 17:56) [8]> Я например делал для того, чтобы использовать методы записи.
В D7 методов записи нет.
← →
Leonid Troyanovsky © (2007-04-22 18:15) [9]
> _Аноним (22.04.07 17:51) [7]
> Я например делал для того, чтобы использовать методы записи.
Высказывайся ясней, таинственный наш.
--
Regards, LVT.
← →
_Аноним (2007-04-22 19:38) [10]
> Leonid Troyanovsky ©
А чего тут неясного, непонятливый наш?
{RASkov} вот понял.
← →
Ёжик (2007-04-22 20:21) [11]
> Объяви еще как shortstring
Это ухмылка или подсказка?
← →
{RASkov} (2007-04-22 20:39) [12]> [11] Ёжик (22.04.07 20:21)
Приведи полный код или может быть тебя устроит var F: TextFile;
← →
Ёжик (2007-04-22 20:45) [13]Ну так этА(( Это и есть полный код. TextFile это крайний случай. Или накрайняк ini из KOL Кладова.
← →
sniknik © (2007-04-22 20:51) [14]> WideString - указатель на строку? Как же быть?
а смотря что хочеш сделать...
> Мне не нужен текстовый файл.
если бы код сработал, вместо указателя были бы данные то по нему ты бы получил именно текстовый файл... ? и как это не нужен, если его и пытаешься сделать. ну с расширеним ini только.
> Это ухмылка или подсказка?
видиш смайл ухмылки? а нет так возьми и проверь...
но shortstring, или ansistring это вовсе не widestring... "юникодность" потеряется если была, переконвертит строку на присвоении... или это неважно? зачем тогда указывал именно widestring?
← →
sniknik © (2007-04-22 20:53) [15]> Или накрайняк ini из KOL Кладова.
это тоже текстовый файл...
← →
Leonid Troyanovsky © (2007-04-22 20:56) [16]
> _Аноним (22.04.07 19:38) [10]
> А чего тут неясного, непонятливый наш?
> {RASkov} вот понял.
У рекордов не было методов и в D1.
--
Regards, LVT.
← →
{RASkov} (2007-04-22 21:14) [17]> [13] Ёжик (22.04.07 20:45)
> var F : File;
> Server_ : TServer;
>.......
> BlockWrite (F, Server_, SizeOf (TServer));
Ну а зачем так делать? SizeOf (TServer) конкретно в твоем случае всегда будет 4...
Делай процедуру записи в файл твоей структуры, для конкретного примера типа так:procedure SaveMyRecord(const FlNm: String; Rec: TServer);
var FS: TStream; N: Integer;
begin
FS:=TFileStream.Create(FlNm, fmCreate);
try
N:=Length(Rec.edServer);
FS.WriteBuffer(N, SizeOf(Integer));
FS.WriteBuffer(Rec.edServer, N);
finally FS.Free; end;
end;
Что нить в этом духе....И WideString возможно и не нужен, так как с ним наверное по другому будет, не работал я с ним(WideString)....
← →
Ёжик (2007-04-23 02:39) [18]
> "юникодность" потеряется если была, переконвертит строку
> на присвоении... или это неважно? зачем тогда указывал именно
> widestring?
Дык, dll однако. Оно, конечно, можно и в exe, но там циклы всякие - зачем память съедать?
← →
Ёжик (2007-04-23 02:39) [19]
> "юникодность" потеряется если была, переконвертит строку
> на присвоении... или это неважно? зачем тогда указывал именно
> widestring?
Дык, dll однако. Оно, конечно, можно и в exe, но там циклы всякие - зачем память съедать?
← →
Leonid Troyanovsky © (2007-04-23 09:46) [20]
> Ёжик (23.04.07 02:39) [19]
> Дык, dll однако. Оно, конечно, можно и в exe, но там циклы
> всякие - зачем память съедать?
Помылся б ты, Ёжик (c)
В смысле, книжечку почитай.
--
Regards, LVT.
← →
_Аноним (2007-04-23 10:57) [21]> Ёжик (22.04.07 20:21) [11]
>
> > Объяви еще как shortstring
>
> Это ухмылка или подсказка?
Вообще задумывалось как подсказка, но опечатался, получилась ухмылка. Следовательно, дурацкий совет:-)
> Leonid Troyanovsky ©
> У рекордов не было методов и в D1.
Не было. А теперь есть
← →
Leonid Troyanovsky © (2007-04-23 11:25) [22]
> _Аноним (23.04.07 10:57) [21]
> > У рекордов не было методов и в D1.
> Не было. А теперь есть
Т.е., в D1..7 их не было.
К чему тогда: "Здесь, наверно, не весь код представлен".
Предположим, что {RASkov} понял правильно (хотя,
"чтобы использовать методы записи" понять нелегко).
Но, ты признался в этом только после того, как я тебя пнул.
--
Regards, LVT.
← →
sniknik © (2007-04-23 11:30) [23]> Вообще задумывалось как подсказка, но опечатался, получилась ухмылка. Следовательно, дурацкий совет:-)
нормальный совет, короткие строки включаются в рекорд статически (данные а не указатель)... т.е. если это не текст и странный символ в начале (длинна) не мешается то почему бы и нет...
от символа тоже легко избавиться, представив строку массивом, но это при данных условиях приведет нас все к тому же - текстовый файл, правда с лишними пробелами на концах строк.
> Не было. А теперь есть
а вот это замечание как раз дурацкое... т.к. в теме указан D7, разговор шел про D7, и ранние версии... т.е. указана конкретная версия дельфей. ни раньше ни сейчас ни в будущем в этой версии методов у рекордов не появится.
← →
_Аноним (2007-04-23 11:41) [24]
> Leonid Troyanovsky ©
Я не обратил внимание, что в сабже стоит "D7"
но дело не в этом
я имел в виду под "Здесь, наверно, не весь код представлен" то, что скорее всего, в записи еще есть члены (поля или методы, неважно).
(изначально то сыр бор разгорелся на тему "зачем запись с одним полем")
А пинаться нехорошо (несмотря на то, что на данном ресурсе это принято)
← →
sniknik © (2007-04-23 11:53) [25]> А пинаться нехорошо (несмотря на то, что на данном ресурсе это принято)
пинки здесь потому и приняты, что без них принято исходной информации не давать... а она требуется для обсуждения/понимания того, что собеседник говорит.
ну а т.к., судя по всему, люди тут не просто бездумно кидают пустопорожние фразы, а ведут осмысленный диалог... ну дальше можеш сам продолжить.
а если без пинков из разговора уходит смысл то пинки это хорошо! имхо.
← →
Leonid Troyanovsky © (2007-04-23 11:57) [26]
> _Аноним (23.04.07 11:41) [24]
> А пинаться нехорошо (несмотря на то, что на данном ресурсе
> это принято)
Тебе, считай, еще свезло.
Во-ще-то, я с анонимами стараюсь не общаться.
--
Regards, LVT.
← →
_Аноним © (2007-04-23 12:13) [27]
> Leonid Troyanovsky ©
так лучше?
← →
Leonid Troyanovsky © (2007-04-23 12:38) [28]
> _Аноним © (23.04.07 12:13) [27]
> так лучше?
Значительно лучше.
--
Regards, LVT.
← →
_Аноним © (2007-04-23 12:44) [29]
> Leonid Troyanovsky ©
А разницы то никакой. По сути, анонимны практически все (кроме тех,кто лично друг друга знает, но таких явное меньшинство).
Ладно, видимо специфика ресурса такова.
Жаль только, что люди, которые некоторое время назад представляли собой очень хорошее и редкое исключение из правила "мастер - значит и мастер по пинкам", перестают быть таковыми.
← →
Leonid Troyanovsky © (2007-04-23 12:54) [30]
> _Аноним © (23.04.07 12:44) [29]
> А разницы то никакой. По сути, анонимны практически все
> (кроме тех,кто лично друг друга знает, но таких явное меньшинство).
Ну, почему ж.
Я уже про тебя кое-что знаю, во всяком случае то, что тебе
небезралично, как тебя воспринимают (встречают).
А встречают же, в первую очередь, по одежке
(которую завещали беречь снову).
Т.е., обманываться не хочется, т.е., привечу тебя как _Анонима,
а вместо него - жалкий аноним ;)
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2007-04-24 00:01) [31]> _Аноним (23.04.2007 12:44:29) [29]
Петух птица гордая, пока не пнешь не полетит.
← →
_Аноним © (2007-04-24 00:15) [32]
> Anatoly Podgoretsky ©
Петухи не летают
← →
{RASkov} (2007-04-24 01:01) [33]> Петухи не летают
Ну да... пока их не пнешь :) Что удивительно - после пинков летать умеют все. :) Не в обиду.
← →
Германн © (2007-04-24 01:43) [34]
> {RASkov} (24.04.07 01:01) [33]
>
> > Петухи не летают
>
> Ну да... пока их не пнешь :) Что удивительно - после пинков
> летать умеют все. :) Не в обиду.
>
+1
← →
Ёжик (2007-04-26 20:12) [35]Т.е. не получится записать строку в виде абра-кадабры, как в случае с записью?
← →
_Аноним © (2007-04-26 22:00) [36]
> Что удивительно - после пинков летать умеют все. :) Не в
> обиду.
Это иллюзия.
Это тоже самое, как сказать, что человек, срвавшийся в пропасть, постиг левитацию.
А на этом ресурсе за пинками во все стороны давно не видно, зачем это все вообще нужно, кроме чесания чувства собственной важности пинателей
← →
{RASkov} © (2007-04-27 00:18) [37]> [36] _Аноним © (26.04.07 22:00)
Да ладно тебе.... не обращай внимания. На этом ресурсе так. ;)
← →
sniknik © (2007-04-27 01:01) [38]> после пинков летать умеют все. :) Не в обиду.
не все. доказано практикой.
> Т.е. не получится записать строку в виде абра-кадабры, как в случае с записью?
записать то получится, только цели то такой не стояло... до [35] цель была "немного" другая.
← →
Ёжик (2007-04-27 18:16) [39]Цель была - записать значение переменной в записи. И всё. Циферки же абра-кадаброй записываются. Почему со строкой так низя?:)
← →
sniknik © (2007-04-27 19:32) [40]почему нельзя? можно! то что у тебя не получается (а почему было объяснено) это вовсе не показатель что нельзя...
некоторые вон 2+2 сложить не могут, но это же не значит что они "нескладываемые".
циферки кстати вовсе не абракадабра... просто просматриваешь ты их не в том формате что записывал... не совпадают форматы отображения, а у строк совпадают (не у всех конечно, если одну кодировку из под другой рассматривать тоже будут "абракадабры").
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.043 c