ListBoxにパスを保存するときダブルクオーテイションは必要ですか?

解決


武田  2008-09-09 02:31:24  No: 31897

初歩的なことですが。
TStringlistにファイルのプルパスやURLを保存するとき、ダブルクオーテイションで囲んで保存しないと、誤動作するのは体験しましたが
Listboxではまだ経験していません。
やはり、TListboxでもダブルクオーテイションで囲んで保存すべきでしょうか。
よろしくお願いします。


igy  2008-09-09 03:01:09  No: 31898

>誤動作するのは体験しましたが

どのような誤作動ですか?


武田  2008-09-09 09:05:30  No: 31899

必要なときStirngList.Strings[i]でパスを取り出すとき
スペースなどが入ったパスの時文字列が途中で切れます。
従ってパスによりファイルを呼び出せないケースがあります。


おも  2008-09-09 09:55:46  No: 31900

>>必要なときStirngList.Strings[i]でパスを取り出すとき
>>スペースなどが入ったパスの時文字列が途中で切れます。

この時点で途中で切れているのをちゃんと確認されましたか?

たぶん、この時点では途中では途切れていないと思います。

>>従ってパスによりファイルを呼び出せないケースがあります

が、APIなどでファイル呼び出しにスペースの入ったパスをダブルクオーテションなしで使うと、スペースを引数の区切りと誤認?されるのでファイル呼び出しに失敗するのだと思います。

>>やはり、TListboxでもダブルクオーテイションで囲んで保存すべきでしょうか。
回答ははいになります。


うんと  2008-09-09 10:29:49  No: 31901

ListBox は StringList と違ってUIですから見た目も重要です。
したがって、文字列はダブルクオーテションなしにすべきです。
そして、それを使うときダブルクオーテションを補充するとよいのでは。

Filename := '"' + ListBox1.Items[i] + '"';


武田  2008-09-09 21:04:03  No: 31902

説明不足でした。
通常StringlistにURLやフルパスを格納するときは
str:=AnsiQuotedStr(strURL, '"');
StringList.Add(str);
で格納しています。
取り出して使うときは
    P: PChar;
    str:string;
 begin
   str:=StringList.Strings[i];
   P := PChar(str);
   str := AnsiExtractQuotedStr( P, '"');
   Label1.Caption := str;
end;
のようにして使っています。
このパスやURLをListBoxに格納するときも
””で囲って格納して、使うときは””をはずして使うようにする必要が
あるのかどうかということです。
すみません。


うんと  2008-09-09 21:19:26  No: 31903

なにをしているのか、まったく意味不明です。

>スペースなどが入ったパスの時文字列が途中で切れます。

こういうことはありません。


igy  2008-09-09 21:37:05  No: 31904

>必要なときStirngList.Strings[i]でパスを取り出すとき
>スペースなどが入ったパスの時文字列が途中で切れます。

・スペースなどが入ったパスの時 には、必ず切れるのですか?
・もし、特定の文字列の場合には、具体的には、途中で切れる文字列は、何ですか?
(例:c:\Program Files\Windows NT とか)
・取り出すときではなく、格納時に切れているということはありませんか?


ttt  2008-09-09 21:37:22  No: 31905

CommaTextやDelimitedTextを使って登録すると
スペースも区切り文字として扱われるため、
""で囲んでいないと思わぬ結果になることがあります。
ひょっとしてそれと混同しているのかな?

AddやStrings[]で個別に扱う分にはそんな制限はありませんし、
いちいち""で囲んだり外したりする必要もありません。


武田  2008-09-10 23:05:03  No: 31906

みなさん教えていただきありがとうございました。
tttさんの言われるように、CommaTextを使ったときかもしれません。
以前それで苦労したことがありますので。
Stringlistにコンマで区切って複数の項目をくっつけて格納して
取り出すとき、よく、Cmmatextを使いますので、そのときかもしれません。
取り越し苦労でした。
ありがとうございました。


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

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






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