Discussion:
как записать pchar в файл?
(слишком старое сообщение для ответа)
Kaigorodov Anthony Noof
2005-11-12 17:43:08 UTC
Permalink
_Тише, All._

Использую blockwrite(file,pchar_var,1);
пишет в файл есесенно "то что мне надо" минус один последний символ. Его
заменяет 0x00 и таких нулей до конца файла.
Вес файла становится 128 байт.

И как сконвертировать pchar в string быстрейшим образом.?
Чистым WinApi.

_Hочь All ..._
Ivan Kuvshinov
2005-11-12 21:00:34 UTC
Permalink
KN> Использую blockwrite(file,pchar_var,1);
Hе понял, что ты делаешь и что надо?
Точно не знаю, но вроде бы PChar - это указатель на массив символов, просто
есть процедуры и функции работающие с ним как со строкой, но мне кажеться,
BlockWrite в их число не входит.
KN> пишет в файл есесенно "то что мне надо" минус один последний символ.
KN> Его заменяет 0x00 и таких нулей до конца файла. Вес файла становится
KN> 128 байт.
У меня такое впечатление, что у тебя определенны блоки в 128 байт (может быть
по умолчанию) и ты пишешь один блок с адреса расположения указателя pchar_var.

KN> И как сконвертировать pchar в string быстрейшим образом.?
KN> Чистым WinApi.
Програмный интерфейс приложений здесь ни причём. Быстрейший способ - это
записать в первый символ PChar #255 и ссылаться на него как на ^String :-) По
желанию корректируя длинну, поиском "нулевого символа" в одном из 255 байт
динамической строки - всё остальное по любому урезанно.

КИА
Kaigorodov Anthony Noof
2005-11-13 03:13:00 UTC
Permalink
_Тише, Ivan._

(13 Nov 05 00:00), ты писал мне:

KN>> Использую blockwrite(file,pchar_var,1);
IK> Hе понял, что ты делаешь и что надо?
IK> Точно не знаю, но вроде бы PChar - это указатель на массив символов,
IK> просто есть процедуры и функции работающие с ним как со строкой, но
IK> мне кажеться, BlockWrite в их число не входит.
Согл. но writefile_ом не хочу =(
KN>> пишет в файл есесенно "то что мне надо" минус один последний
KN>> символ. Его заменяет 0x00 и таких нулей до конца файла. Вес файла
KN>> становится 128 байт.
IK> У меня такое впечатление, что у тебя определенны блоки в 128 байт
IK> (может быть по умолчанию) и ты пишешь один блок с адреса расположения
IK> указателя pchar_var.
тоже (наверняка) верно... но вот и ищу другой способ.
KN>> И как сконвертировать pchar в string быстрейшим образом.?
KN>> Чистым WinApi.
IK> Програмный интерфейс приложений здесь ни причём. Быстрейший способ -
IK> это записать в первый символ PChar #255 и ссылаться на него как на
IK> ^String :-) По желанию корректируя длинну, поиском "нулевого символа"
IK> в одном из 255 байт динамической строки - всё остальное по любому
IK> урезанно.
хм :-\
чего то мне тут не нравится

А вот как насчет: тк ет указатель... есть идея попробовать посабирать асмом с
памяти некоторые символы до 0х00 и все ето в норм. стринг. А ето уже врайтлном
или тем же блокврайтом... а?
проблема в том... что под винь я в асме не писал. также как и в досе примерно?
аль?

_Hочь Ivan ..._

np: Hочь
Ivan Kuvshinov
2005-11-13 10:26:10 UTC
Permalink
IK>> символов, просто есть процедуры и функции работающие с ним как со
IK>> строкой, но мне кажеться, BlockWrite в их число не входит.
KN> Согл. но writefile_ом не хочу =(
Соответственно, надо тогда указывать: pchar_var^, размер блока в еденицу, и
писать: BlockWrite(F,pchar_var^,size); Размер же придётся вычислить.

IK>> "нулевого символа" в одном из 255 байт динамической строки - всё
IK>> остальное по любому урезанно.
KN> хм :-\
KN> чего то мне тут не нравится
Ты давай ближе к конкретике, что делаешь - что за задача, а мы уже тогда
посоветуем чего-нибудь.

KN> А вот как насчет: тк ет указатель... есть идея попробовать посабирать
KN> асмом с памяти некоторые символы до 0х00 и все ето в норм. стринг. А
KN> ето уже врайтлном или тем же блокврайтом... а? проблема в том... что
KN> под винь я в асме не писал. также как и в досе примерно? аль?
Hе заморачивайся, в модуле Strings - всё есть:
function StrPas(str: PChar): String;
function StrLen(str: PChar): Longint;
Проблема в том, что обычная строка HЕ БОЛЕЕ 255 символов, а PChar - скоко
хошь.
Соответсвтвенно, если тебе просто надо PChar записать в файл, то будет
примерно так (при размере блока в еденицу):
BlockWrite(F,pchar_var^,StrLen(PChar_var)+1); - наличие нулевого символа
проверяй сам.
Можешь также переопределить процедуру BlockWrite, что бы она узнала тип PChar,
то есть обернуть эту строчку в процедуру с обычным вызовом. И для Reset/Rewrite
тоже надо будет сделать Overload :-)

КИА
man
2005-11-16 17:12:24 UTC
Permalink
Жизнь начинается сегодня, Kaigorodov

KAN> тоже (наверняка) верно... но вот и ищу другой способ.
KN>>> И как сконвертировать pchar в string быстрейшим образом.?
KN>>> Чистым WinApi.
IK>> Програмный интерфейс приложений здесь ни причём. Быстрейший
IK>> способ - это записать в первый символ PChar #255 и ссылаться на
IK>> него как на ^String :-) По желанию корректируя длинну, поиском
IK>> "нулевого символа" в одном из 255 байт динамической строки - всё
IK>> остальное по любому урезанно.
KAN> хм :-\
KAN> чего то мне тут не нравится
KAN> А вот как насчет: тк ет указатель... есть идея попробовать посабирать
KAN> асмом с памяти некоторые символы до 0х00 и все ето в норм. стринг. А
KAN> ето уже врайтлном или тем же блокврайтом... а? проблема в том... что
KAN> под винь я в асме не писал. также как и в досе примерно? аль?

Проблема в том, что твои мозги настолько атрофировались, что в хелп заглянуть
ты не в состоянии. Hа ассемблере писать то, что на паскале в одну строчку
пишется. Воистину, верны слова Луговского: ассемблер - язык ламеров.

Если не умеешь пользоваться хелпом - подскажу. Hабери в окне ide32 слово
strings и нажми на нём CtrlF1.

ps: think positive ;-)~
Kaigorodov Anthony Noof
2005-11-21 22:06:20 UTC
Permalink
_Тише, man._

(16 Nov 05 20:12), ты писал мне:

KAN>> тоже (наверняка) верно... но вот и ищу другой способ.
KN>>>> И как сконвертировать pchar в string быстрейшим образом.?
KN>>>> Чистым WinApi.
IK>>> Програмный интерфейс приложений здесь ни причём. Быстрейший
IK>>> способ - это записать в первый символ PChar #255 и ссылаться на
IK>>> него как на ^String :-) По желанию корректируя длинну, поиском
IK>>> "нулевого символа" в одном из 255 байт динамической строки - всё
IK>>> остальное по любому урезанно.
KAN>> хм :-\
KAN>> чего то мне тут не нравится
KAN>> А вот как насчет: тк ет указатель... есть идея попробовать
KAN>> посабирать асмом с памяти некоторые символы до 0х00 и все ето в
KAN>> норм. стринг. А ето уже врайтлном или тем же блокврайтом... а?
KAN>> проблема в том... что под винь я в асме не писал. также как и в
KAN>> досе примерно? аль?
m> Проблема в том, что твои мозги настолько атрофировались,
m> что в хелп
m> заглянуть ты не в состоянии.
на заметку. Я в хелп заглядываю очень даже часто.
А об атрофировании... не тебе говорить
m> Hа ассемблере писать то, что на паскале в
m> одну строчку пишется.
m> Воистину, верны слова Луговского: ассемблер -
m> язык ламеров.
ууу... Я и вправду ламер. еще тот! тк я просто обожаю асм. ты чувак крут!
Ты на паскале. молодЦа.
m> Если не умеешь пользоваться хелпом - подскажу. Hабери в окне ide32
m> слово strings и нажми на нём CtrlF1.
нах мне стрингс? я точно написал _KN>>>> Чистым WinApi._
и я не в ide32 . я в dcc32.
+ вопрос уже решен.

вывод: Читай лучше

_Hочь man ..._

np: F.R.David - Words

man
2005-11-16 17:10:28 UTC
Permalink
Жизнь начинается сегодня, Ivan

KN>> И как сконвертировать pchar в string быстрейшим образом.?
KN>> Чистым WinApi.
IK> Програмный интерфейс приложений здесь ни причём. Быстрейший способ -
IK> это записать в первый символ PChar #255 и ссылаться на него как на
IK> ^String :-)

Что за чухню ты погнал?

ps: think positive ;-)~
Loading...