CharにStringの値を代入するには?

解決


Least  URL  2002-11-14 08:15:06  No: 2127

たまに現れては質問ばっかりですみませんm(__)m

var
  Chr: array[0..x] of Char;
  Str: String;
begin
  Chr:=Str;
  //↑もちろん、これじゃ無理です。

今回、バイナリでファイルを出力するので、Char型になってるんです。
そうじゃなくても大丈夫だ  って場合もお願いします。教えてください。
では...


にしの  2002-11-14 08:34:07  No: 2128

CopyMemory(@Chr[0], PChar(Str), x);
でコピーできます。
ほかにもいろいろなアプローチの仕方がありますが。

詳しくは、CopyMemoryをWin32のヘルプで調べてみてください。


カモ鍋  2002-11-14 14:35:45  No: 2129

カルガモ「こんなんもありかも鍋。φ(..)♪」

type
  ArrayOfByte = array of byte;
var
  sStr: string;
  cChr: ArrayOfByte absolute sStr;
  i : Integer;
begin
  sStr := 'ほにゃらら?コピー不要かいな?そうかいな';
  Memo1.Lines.Add(PChar(cChr));
  for i:=0 to StrLen(PChar(cChr)) do
    Memo1.Text := Memo1.Text + IntToHex(cChr[i], 2) + ' ';
end;

ドジョウ「ん?そんなことせんで、これでどじょう鍋。ζ」

begin
  sStr := 'ほにゃらら?そのまんまファイル保存かいな?そうかいな';
  fs := TFileStream.Create('ほにゃらら.bin', fmCreate);
  fs.Write(sStr[1], Length(sStr));
  fs.Free;
end;

缶チュウハイ「そのまんま保存なん意味ないで。エディタで見えてまんがな。見せとうないンなら暗号化せなあかんチュウハイ」


hatena  2002-11-14 23:58:35  No: 2130

にしのさんと考え方は同じですが、Delphiの標準関数を使うと、
 StrPLCopy(Chr, Str, x);

カモ鍋さんの、
  sStr: string;
  cChr: ArrayOfByte absolute sStr;
absolute は知っていたんですがこんなことできるんですね。
これはコピーではなく、同じメモリを共有するというイメージ
ですよね。長い文字列型と共有するとなると使い方によっては
なんか不安がありますね。どうなんだろう。


Least  URL  2002-11-15 03:54:03  No: 2131

みなさん、どうも色々と有難うございます。
おかげで解決できました。
感謝いたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加