どーも。ちょっとわかる方が居たら教えていただきたいんですが、、、。

TStringListまたはWriteLn関数、commatextあたりでなにかバグは報告され
ていますでしょうか??

TStringlistから読み込んでテキストファイルに落としてやりとりをしている
のですが急におかしな動きをするようになってしまいました。
いくつかの端末にそのプログラムはインストールされていてここ半年ほどは
正常に動作していました。
急にひとつの端末だけ以前のようにテキストファイルが作れなくなってしまい
ました。
莫大な数の文字数が入っていたときにもおかしくなってしまったのですが、今
回はそのようなことは無いようです。

TStringListにて作成されたリストをコンマテキストでテキストファイル
に落としている最中に、途中で莫大な量のNULL値が入ってしまいます。
その項目の後にもまだデータはあります。
ある項目のデータの行の途中で急にNULL値。
他の端末では出ないのに、そこの端末では何度やってもその現象が出ます。
なぜ???
バグをいろいろ検索してみているのですが、見当たりませんし、、、。

もしこのようなテキスト、Tstring等でバグの情報をお持ちでしたら教えてく
ださい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんばんは.



Delphi 5には質問のようなバグは無いようですね.
CSVデータに問題があるのではないでしょうか?たとえば,時刻や日付等をCSVに含んでいる場合,システム日付を取得するときは「地域のオプション」に左右されますよね.そうすると,予期していたフォーマットが異なるということが考えられます.
また,CommaTextはスペースを","に変更しているのでTrim関数などを使用してはどうでしょうか?

ちょっと回答になっていないかもしれませんが検討してみてください.
    • good
    • 0

こんにちは.


Delphiのバージョン等を教えていただかないと回答ができません.(^^
調べたところDelphi3でCommaText関連のバグが出ているようです.
Delphi3以外の場合はまた連絡下さい.

参考URL:http://www.borland.co.jp/delphi/readme.up3

この回答への補足

早速のレスありがとうございます。
バージョンは、「Delphi5」です。

補足日時:2001/03/27 17:45
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q水差しのアイヴィーの根が緑色に染まってしまいました

アイヴィーを、透明なガラスの花瓶に水挿しにしています。
場所は、窓辺です。
昨日、アイヴィーの元気がなく、枯れかかっているのに気付きました。
よく見ると、根が緑色に染まっています。
(これまでの根は、きれいな白に近い色をしていました)
花瓶の内側もうっすらと緑色になっています。
これは、アオコや苔、もしくはカビでしょうか?
窓辺に置いたせいで、それらが繁殖して、アイヴィーの根に付着してしまったのでしょうか・・・。
アイヴィー2本の根は緑色に染まっていますが、まだ余力がありそうです。
今後、この緑色になった根には、どのような対策をとればよいのでしょうか。
ご存知の方がいらっしゃいましたら、どうかアドバイスをお願いします。

Aベストアンサー

たぶんご推察の通りでしょうね。
根の部分に黒い紙などを巻きつけて
光をさえぎってやればいいとおもいます。
とりあえずは水の交換が先かな。

QUNIX:テキストファイルのNULLを空白に変換したい。

お世話になります。
現在テキストファイルをOracleデータベースに取り込む処理を開発しております。SQL*Loaderを用いて、テスト.datを取り込もうとしたのですが、
ORA-01722: 数値が無効です。エラーが出てデータを取り込めません。

テスト.datの中身を見たところ、該当個所に下記のようにNULLが入っていました。
数値型のテーブル項目に、NULLを取り込もうとしてエラーになっています。
Oracleの場合、数値型では空白は取り込めるようですが、NULLは取り込めないようです。

ですので、テスト.datのNULLの個所を空白に変換する方法を調査しています。

sedや、awk、perlを使えばできるのでしょうが、私は詳しくないため
方法が思いつきません。
どなたか、sed、awk、perlに詳しい方がいれば、方向性のヒントだけでも
お教えねがいますでしょうか。

環境: Solaris 9

■テスト.dat

od -c テスト.dat > テスト.txt

※ \t = タブ、\0= NULL

$ head -10 テスト.txt
0000000 0 0 1 \t 0 1 0 1 \t 1 \t 0 1 0 1 \t
0000020 0 0 0 0 0 0 \t 0 3 7 \t 1 0 0 1 0
0000040 2 8 \t \0 \0 \0 \t \0 \0 \0 \0 \0 \0 \0 \0 \0
0000060 \0 \t \0 \t 0 0 \t 6 3 \t 0 0 \t 1 \t

■編集後のイメージ
\0(NULL)の個所を、そのままスペース(空白)で置き換えたい。

0000000 0 0 1 \t 0 1 0 1 \t 1 \t 0 1 0 1 \t
0000020 0 0 0 0 0 0 \t 0 3 7 \t 1 0 0 1 0
0000040 2 8 \t   \t
0000060 \t \t 0 0 \t 6 3 \t 0 0 \t 1 \t

よろしくお願いします。

お世話になります。
現在テキストファイルをOracleデータベースに取り込む処理を開発しております。SQL*Loaderを用いて、テスト.datを取り込もうとしたのですが、
ORA-01722: 数値が無効です。エラーが出てデータを取り込めません。

テスト.datの中身を見たところ、該当個所に下記のようにNULLが入っていました。
数値型のテーブル項目に、NULLを取り込もうとしてエラーになっています。
Oracleの場合、数値型では空白は取り込めるようですが、NULLは取り込めないようです。

ですので、テスト.datのNULL...続きを読む

Aベストアンサー

以下のようなperlのスクリプトを作ってください。
-----------------------------------
open FH, $ARGV[0] or die "open error $!";
while(read FH,$data,1){
$data =~ tr/\x00/\x20/;
print $data;
}
close FH;
---------------------------------
上記のスクリプトのファイル名を conv.pl とします
perl conv.pl テスト.dat > テスト.dat2
とすると
テスト.dat2が作成されます。(NULLをスペースに変換したファイル)

Qエクセルでカンマ区切りのscvファイル

エクセル97を使っています。
以前は、保存時にカンマ区切りのscvファイルとして
シートを保存できたのですが、いつのまにかできなくなってしましました。

セルに数字を入れたタテ1列のデータなのですが、
scvファイルはできるのですが、カンマではなく改行になってしまいます。
(同じく、タブ区切り、スペース区切りも改行になります)
これはどこかの設定がかわってしまったのでしょうか?
どうすれば直せるか、ご存知の方がいらっしゃいましたらお教え下さい。

Aベストアンサー

タテ1列ということは、A列に
100
200
300
というふうに入っているわけですよね?
だったらCSVファイルをメモ帳などで開いたときは
100(改行)
200(改行)
300(改行)
[EOF]
のようになっていて、それは正常です。
A列からC列に
100 110 120
200 210 220
300 310 330
のように入っていてはじめて
100,110,120(改行)
200,210,220(改行)
300,310,330(改行)
[EOF]
のようにカンマが登場します。
「列区切りはカンマ、行区切りは改行」
ってわけです。
頑張ってくださいヽ(^。^)ノ

Qpascalで、たとえば、変数nを実数として、「writeln(n:2

pascalで、たとえば、変数nを実数として、「writeln(n:2:3)」とかいたときに、「3」は小数点以下の桁数らしいですが、「2」はどういう意味なのですか?
自分で調べてみたところ、全体の桁数だとか、指数で表示させないためだとかとあったのですが、いまいちよくわかりません。

Aベストアンサー

nの次の引数は、桁数というより、編集エリアの領域長さと言う方が良いみたいで
nが実数のとき、整数部の桁数と小数点以下桁数と小数点の1桁を合計したものより大きい場合のみ意味を持つようですね。
長い領域に、数値を右詰表示にしたいときに使うようです。
ちなみにこの表記方法は実際のプログラミングでは、あまり使わないし
どちらかというと、Format関数に頼るほうがほとんどではないでしょうか。

QLEXUS SC430とソアラ430SCVのトランスミッションについて質問があります。

上記の2車種、SC430-AT6速、ソアラ430SCV-AT5速のATはそれぞれ何馬力まで耐えられるか教えて下さい。

Aベストアンサー

トムスよりスーパーチャージャーが発売されています。
この場合、40ソアラで354馬力。SC430で340馬力。
もちろんミッションは問題なし。

スーチャー+Vプロで380馬力の40ソアラがいますが、
ミッショントラブルはなし。(※ATクーラーは必須です。)
車種は違いますが、30セルシオ前期(5速AT)の
スーチャー+モーテックで制御しておられた方が
いらっしゃいましたが、5万km走行でATが壊れました。
推定400馬力だったと思います。

トムスの話でもTECII+スーチャーで400馬力は楽勝で狙えるが
ミッションが怖いので350馬力止まりということです。

私見としては耐久性などは互角と思いますが、
エンジンの吹け上がり方などのレスポンスは5速の40ソアラに
軍配が上がります。
6速は燃費に振ってあるので加速が悪いとはメーカーのお話。

参考までにHKS九州とガレージ福井が40ソアラで3UZターボを作成していました。
真剣に詰めるなら、問い合わせてみてはいかがでしょうか?
ちなみに3UZの5速ATは新品購入しても30万円でお釣りがきます。

トムスよりスーパーチャージャーが発売されています。
この場合、40ソアラで354馬力。SC430で340馬力。
もちろんミッションは問題なし。

スーチャー+Vプロで380馬力の40ソアラがいますが、
ミッショントラブルはなし。(※ATクーラーは必須です。)
車種は違いますが、30セルシオ前期(5速AT)の
スーチャー+モーテックで制御しておられた方が
いらっしゃいましたが、5万km走行でATが壊れました。
推定400馬力だったと思います。

トムスの話でもTECII+スーチャーで400馬力は楽勝で狙えるが
ミッシ...続きを読む

Qタブ区切りのテキストファイルの項目を並び変えたいのです。

タブ区切りのテキストファイルの項目を並び変えたいのです。

例えば、
A りんご 犬 赤
B みかん ねこ 黄
C パイナップル ねずみ 緑

という風にタブ区切りで並んでいるテキストファイルを

赤 りんご 犬 A 
黄 みかん ねこ B 
緑 パイナップル ねずみ C 

などという風に項目を並び変えたいのです。

EXCELに一度取り込んでVBAでコーディングすればよいのでしょうか?
具体的にどのように記述すればよいかお願いいたします。

また、インストールなどはせずに単体で動かしたいのですが、VBAではなく他の方法もあれば教えてください。

Aベストアンサー

#1です。VBAかどうかはともかく、プログラムを組むのが一番早いのですが、プログラム(言語)を習得するのに数ヶ月かかったりして(^^;
エクセルでの作業をマクロ記録し、VBAを多少いじるという方法もありそうですが、プログラムなしの方法として

1.エクセルに読み込む
2.データ全てを選択・コピー
3.新しいシートに「型式を選択して貼り付け」の「行列を入れ替える」で貼り付け
4.先頭列に一列挿入
5.先頭にできた空白列に並べ替えたい順番を記入。提示された礼ならば4,2,3,1
6.データ全体を選択し、メニューバーの「データ」、「並べ替え」で、最優先されるキーをA列にする
7.A列を削除後、前記2.3.の逆を行う
こんな手順で駄目でしょうか。5.の「並べ替えたい順番」は、再利用できそうです。全手順をマクロ記録して、再利用も可能でしょう。

QSCVデータをWindowsアドレス帳にインポート

表題の質問です。

iphoneを購入したため、連絡先をショップでサーバーに保管
⇒アクセス&ダウンロードして、Windowsアドレス帳に移そうとしているのですが、
なぜか名前はインポートされても、電話番号、メールアドレスが
インポートされる人とされない人がおり、情報がまばらな状態です。

ちなみに、インポートする際の電話番号1は携帯電話にしていますが、
アドレス帳では携帯電話の項目がなく、自宅電話番号と勤務先電話番号しかありません。

PCはあまり得意でなく、こういった作業もSCVというワードを聞くのも初めてなので、
常識的なことを聞いてしまっているかもしれませんが、何卒よろしくお願いします。
補足すべき点がありましたら教えてください。

Aベストアンサー

何処にあったデータをインポートしようとしているのですか?
そのデータ尾wエクセルで開いてみて、項目のずれが無いか確認したら如何でしょうか?
最後に、SCVではなくてCSVだと思います。

QVBSで、テキストファイルに対して、全体の途中に文字列を追加したい

こんばんわ
VBSについて質問です。
テキストファイルを開いて、文字列を追加するスクリプトを作成したいのですが、
以下のようなプログラムであれば、行の一番下に文字を追加できると思います。
########ここから
Dim objFS,objText,objFile

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\test\vbs\test.txt")
Set objText = objFile.OpenAsTextStream(8,-2)
objText.WriteLine("新しい行")

Set objFILE = Nothing
Set objText = Nothing
############ここまで

しかし今やりたいのは分の途中に文字をいれたい。
たとえばテキストファイルが
A
B
C
D

というファイルだったら、
"B"を検索して、Bの下に”新しい行”という文字列を追加したいです。

いろいろ調べましたがどうもうまくいきません。
わかる方ご教授願います。

こんばんわ
VBSについて質問です。
テキストファイルを開いて、文字列を追加するスクリプトを作成したいのですが、
以下のようなプログラムであれば、行の一番下に文字を追加できると思います。
########ここから
Dim objFS,objText,objFile

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\test\vbs\test.txt")
Set objText = objFile.OpenAsTextStream(8,-2)
objText.WriteLine("新しい行")

Set objFILE = Nothing
Set objText = Nothing
########...続きを読む

Aベストアンサー

VBScriptで用意されているファイル処理は
読み込み、書き込み、末尾への追加の3種類です
途中の書き換えは準備されていないのでテンポラリーファイルなどを使って希望の処理を行う方向でしょう

Dim objFS,objText,objFile
Dim objTemp, ss, flag

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\test\vbs\test.txt")
Set objText = objFile.OpenAsTextStream(1,-2)
Set objTemp = objFS.CreateTextFile("C:\Test\vbs\temp.txt",true)

' 書き換え処理をしたかどうかのフラグ
flag = false

do until objText.AtEndOfStream
  ss = objFile.ReadLine
  objTemp.WriteLine( ss )
  if flag = false then
    if ss = "B" then
      flag = True
      objTemp.WriteLine("新しい行")
    end if
  end if
loop
objText.Close
objTemp.Close

if flag then
  '
  ss = objFile.Name
  ' 元が不要なら Deleteメソッドを使用
  objFile.Move( "old_" & ss )
  Set objFile = objFS.GetFile("C:\test\vbs\temp.txt")
  objFile.Move( ss )
end if

Set objFILE = Nothing
Set objText = Nothing
Set objTemp = Nothing

VBScriptで用意されているファイル処理は
読み込み、書き込み、末尾への追加の3種類です
途中の書き換えは準備されていないのでテンポラリーファイルなどを使って希望の処理を行う方向でしょう

Dim objFS,objText,objFile
Dim objTemp, ss, flag

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\test\vbs\test.txt")
Set objText = objFile.OpenAsTextStream(1,-2)
Set objTemp = objFS.CreateTextFile("C:\Test\vbs\temp.txt",true)

' 書き換え処理をし...続きを読む

Q映画「ヴィレッジ」のストーリーについて

(1)アイヴィーは森の中で追われるうちに、リュックを落とします。(多分、その中にお金が入っていると思うのですが。)そのリュックを見つけられなかったために、パトロール中の監視員に薬代として懐中時計を渡したのでしょうか?

(2)ノアは森の中で穴に落ちて死にます。そのことが、森の中に入っていかない村人に、どうして分かったのでしょうか?アイヴィーが村人に、穴の中に何者かが落ちたと知らせたのでしょうか?

Aベストアンサー

答え(1)
あの村に通貨は存在しません。
父親が代金として時計を渡すシーンがありましたよ。
答え(2)
ノアが自宅の床下から化け物の衣装を発見していたことに、両親が気付くシーンがありました。
主人公の報告で、彼がどうやら以前から森に出入りしていることが分かっていました。
そしてアイヴィーが、化け物に襲われたけれど殺したと報告しました。
以上から大人達にはノアが既に亡き者であることに思い当たるのは当然ですね。
穴の底で云々の描写は確かありませんでした。
化け物を撃退した状況をアイヴィーから聞いたかも知れませんが、
そのシーンはありません。

Qbat 途中にテキスト流し込み

bat 途中にテキスト流し込み

似た質問がwebにも有ったのですがどうも解決してない気味でして取り敢えずお手上げデスので質問します。

call文でBATにbatを読み込ませる事が出来るのですが
これでは駄目でして
外部ファイルにSET部分を記述してそれを読み込ませたいのですがcallだとそのBAT内の環境変数を変化させられないようなので・・・。

こういう場合どうやったらいいんでしょうか?

Aベストアンサー

外部ファイル(仮に名前を「env.txt」とします)がこんな感じだとして。

set HENSU_A=AAA
set HENSU_B=111
set HENSU_C=222

バッチではこんな風にして読み出します。

FOR /F "eol=; tokens=1 delims=" %%i in (<env.txtのパス>) DO @%%i

「ファイルの内容を1行ずつ読んで、その内容を do で実行する」

と言う意味です。

つまり「env.txtに書かれた環境変数の内容が設定される」と言う事になります。


人気Q&Aランキング

おすすめ情報