![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Записать WideString строку [D7, 2000, XP]
Ёжик © (2007-04-22 04:42:00)Может я чего-то не понимаю, но не получается.
Записываем
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-23 10:57:00) [21]> Ёжик (22.04.07 20:21) [11]
>
> > Объяви еще как shortstring
>
> Это ухмылка или подсказка?
Вообще задумывалось как подсказка, но опечатался, получилась ухмылка. Следовательно, дурацкий совет:-)
> Leonid Troyanovsky ©
> У рекордов не было методов и в D1.
Не было. А теперь есть
Leonid Troyanovsky (2007-04-23 09:46:00) [22]
> Ёжик (23.04.07 02:39) [19]
> Дык, dll однако. Оно, конечно, можно и в exe, но там циклы
> всякие - зачем память съедать?
Помылся б ты, Ёжик (c)
В смысле, книжечку почитай.
--
Regards, LVT.
Ёжик (2007-04-23 02:39:00) [23]
> "юникодность" потеряется если была, переконвертит строку
> на присвоении... или это неважно? зачем тогда указывал именно
> widestring?
Дык, dll однако. Оно, конечно, можно и в exe, но там циклы всякие - зачем память съедать?
Ёжик (2007-04-23 02:39:00) [24]
> "юникодность" потеряется если была, переконвертит строку
> на присвоении... или это неважно? зачем тогда указывал именно
> widestring?
Дык, dll однако. Оно, конечно, можно и в exe, но там циклы всякие - зачем память съедать?
{RASkov} (2007-04-22 21:14:00) [25]> [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)....
Leonid Troyanovsky (2007-04-22 20:56:00) [26]
> _Аноним (22.04.07 19:38) [10]
> А чего тут неясного, непонятливый наш?
> {RASkov} вот понял.
У рекордов не было методов и в D1.
--
Regards, LVT.
sniknik (2007-04-22 20:53:00) [27]> Или накрайняк ini из KOL Кладова.
это тоже текстовый файл...
sniknik (2007-04-22 20:51:00) [28]> WideString - указатель на строку? Как же быть?
а смотря что хочеш сделать...
> Мне не нужен текстовый файл.
если бы код сработал, вместо указателя были бы данные то по нему ты бы получил именно текстовый файл... ? и как это не нужен, если его и пытаешься сделать. ну с расширеним ini только.
> Это ухмылка или подсказка?
видиш смайл ухмылки? а нет так возьми и проверь...
но shortstring, или ansistring это вовсе не widestring... "юникодность" потеряется если была, переконвертит строку на присвоении... или это неважно? зачем тогда указывал именно widestring?
Ёжик (2007-04-22 20:45:00) [29]Ну так этА(( Это и есть полный код. TextFile это крайний случай. Или накрайняк ini из KOL Кладова.
{RASkov} (2007-04-22 20:39:00) [30]> [11] Ёжик (22.04.07 20:21)
Приведи полный код или может быть тебя устроит var F: TextFile;
Ёжик (2007-04-22 20:21:00) [31]
> Объяви еще как shortstring
Это ухмылка или подсказка?
_Аноним (2007-04-22 19:38:00) [32]
> Leonid Troyanovsky ©
А чего тут неясного, непонятливый наш?
{RASkov} вот понял.
Leonid Troyanovsky (2007-04-22 18:15:00) [33]
> _Аноним (22.04.07 17:51) [7]
> Я например делал для того, чтобы использовать методы записи.
Высказывайся ясней, таинственный наш.
--
Regards, LVT.
{RASkov} (2007-04-22 17:56:00) [34]> Я например делал для того, чтобы использовать методы записи.
В D7 методов записи нет.
_Аноним (2007-04-22 17:51:00) [35]
> И, вообще, зачем нужна запись на 1 поле.
Я например делал для того, чтобы использовать методы записи.
Здесь, наверно, не весь код представлен
Leonid Troyanovsky (2007-04-22 17:23:00) [36]
> Desdechado © (22.04.07 16:18) [5]
> Зачем упакованная запись на 1 поле?
И, вообще, зачем нужна запись на 1 поле.
--
Regards, LVT.
Desdechado (2007-04-22 16:18:00) [37]Зачем упакованная запись на 1 поле? И почему это поле безразмерное?
_Аноним (2007-04-22 15:25:00) [38]
> WideString - указатель на строку? Как же быть?
Объяви еще как shortstring
Ёжик (2007-04-22 15:16:00) [39]WideString - указатель на строку? Как же быть?
Мне не нужен текстовый файл.
sniknik (2007-04-22 10:37:00) [40]TServer = packed record
edServer : WideString; //вот это переменная указатель на строку, а не сами ее данные включенные в рекорд
end;
FillChar (Server_, SizeOf (Server_), 0); //вот это ты очистил указатель
BlockRead (F, Server_, SizeOf (TServer)); //это записал указатель левым какимто значением (то что записано раньше в другой программе/тойже еще раз запущенной уже не действительно)
//edServer := Server_.edServer; //ну еще б ей здесь не валиться, пытаешся передать строку с неизвестно чего, а строки то и нет вообще (посмотри в файле блокнотом что у тебя записывается...)
почитай про работу с текстовыми файлами, и вообще файлами, про TFileStream например.