Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.054 c
9-1150914786
Угадай кто?
2006-06-21 22:33
2007.05.20
Отражение?


3-1172591890
Helen
2007-02-27 18:58
2007.05.20
Проблемы при добавлении записи


2-1177742824
Gloomer
2007-04-28 10:47
2007.05.20
ODBC и база dBase3


2-1177744269
Alex7
2007-04-28 11:11
2007.05.20
Отбражение в DBGrid длинного формата времени


15-1177294373
Slider007
2007-04-23 06:12
2007.05.20
С днем рождения ! 21 апреля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский