「終了していない文字列型の定数です」と出るエラーの対処方法

このQ&Aのポイント
  • JavaScriptのコードで、file.WriteLine()の引数が「ここからレイアウト」の場合に「終了していない文字列型の定数です」というエラーが発生します。
  • このエラーを解決するためには、引数の文字列内にクォーテーションマーク('')やダブルクォーテーションマーク("")が含まれていないか確認してください。
  • また、ファイル名が「test.js」であることを確認し、ファイルの存在を確認してからファイルに書き込む処理を行ってください。
回答を見る
  • ベストアンサー

「終了していない文字列型の定数です」とでます

javascriptの以下のコードで「終了していない文字列型の定数です」と出ます。 var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.OpenTextFile("test.txt", 2, true); try { file.WriteLine("ここからレイアウト"); }finally{ file.Close(); } file.WriteLine()の文字が"ここからレイアウト"の時「終了していない文字列型の定数です」のエラーが出ます。ファイル名は「test.js」です。この文字列を出力する方法を教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.4

No.2さんの回答で解決しているようなものなのですが…。 とりあえず試しました。 普通にSJISで保存したら、正常に実行でき「ここからレイアウト」という文字列が書かれた「test.txt」というファイルができました。 文字コードをあえてUTF-8で保存して実行したところ、「終了していない文字列型の定数です」のエラーが出ました。 そういうことです。

da-ma80
質問者

お礼

無事解決できました。ありがとうございます。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.3

>カタカナはutf-8 なんでまたutf-8?? それが原因です。 Windowsで、WSHで動かすのですよね?シフトJISにしてください。

da-ma80
質問者

お礼

解決できました。ありがとうございます。

da-ma80
質問者

補足

>なんでまたutf-8?? windows標準のテキストエディタのデフォルトで保存してたんですがそれがutf-8だったみたいです。

回答No.2

文字コードは合ってますか?

da-ma80
質問者

お礼

無事解決できました。ありがとうございます。

da-ma80
質問者

補足

すいません、文字コードについてはあまり詳しくないのですが以下のサイトで確認した所、カタカナはutf-8、アルファベットはus-asciiなようです。 http://encode-detector.uic.jp/tool

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

引用符を全角にしてるとか。

da-ma80
質問者

お礼

無事解決できました。ありがとうございます。

da-ma80
質問者

補足

引用符確認した所問題ありませんでした。 また、同様のコードでfile.WriteLineの所を"レイアウト"にした所同様のエラーが出ました。

関連するQ&A

  • 改行を含んだ文字列を正規表現で置換するには?

    正規表現で、改行を含んだ文字列を置換しようと思っています。 例えば下の「infile.txt」にある aaa bbb という(2行にわたる)文字列を zzz という文字列に変換させたい訳です。 試しに「test.vbs」のようなコードを書いてみましたが、これでは上手く行きませんでした。 上手く変換されるようにするには、どうしたら良いでしょうか? ----------------------------------------------------- ○「test.vbs」の内容 Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:\infile.txt") Set outFile = fso.CreateTextFile("C:\outfile.txt") Set regEx = New RegExp regEx.pattern = "aaa\nbbb" repStr = "zzz" Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close ----------------------------------------------------- ○「C:\infile.txt」の内容 aaa bbb ccc

  • ファイルの変換で文字化けを回避したい

    ファイル中の文字列を一部書き換える処理をしています。regEx.replaceを使って書き換えたところ、日本語が下記のように文字化けしてしまいます。 これを回避するためにどうしたら良いでしょうか? ○変換前:test1.txt <description>東京都</description> ○変換結果:test2.txt(文字化け) <description>譚ア莠ャ驛ス</description> ○スクリプト Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("c:\test1.txt") Set outFile = fso.CreateTextFile("c:\test2.txt") Set regEx = New RegExp regEx.pattern = "テスト" repStr = "てすと" Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close

  • テキストファイル中の文字列を書き換えるスクリプトを書きたい

    テキストファイルの文字列を書き換えるスクリプトを考えています。 今、次のところまで出来るようになりました。本当は「こんにちは」の文字列を全て「HELLO」に置換したいのです。現在は一行の中で最初の「こんにちは」は置換されますが、2番目以降が置換されません。同じ行中の2番目以降も置換するには、どうしたら良いでしょうか? <置換前ファイル:sample.txtの中身> こんにちはこんにちはこんにちはこんにちは こんにちは こんにちは <置換前ファイル:sample.txtの中身> HELLOこんにちはこんにちはこんにちは HELLO HELLO <置換スクリプト> Set fso = CreateObject("Scripting.FileSystemObject") Set regEx = New RegExp Set inFile = fso.OpenTextFile("C:\static\sample.txt") Set outFile = fso.CreateTextFile("C:\static\sample1.txt") regEx.Pattern = "こんにちは" repStr = "HELLO" Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close

  • ActiveXを使用したブックマークレットの動作

    javascript:txt=document.selection.createRange();b=txt.text.replace(/\n/g,' ');fso=new ActiveXObject("Scripting.FileSystemObject");newFile=fso.OpenTextFile("c:\\test.txt",8,true);newFile.WriteLine(b);newFile.Close(); という、選択範囲をc:\test.txtファイルに追加書き込みするブックマークレットを組んでみたのですが、上手く行ったり、ページエラーが出て書きこめてなかったり動作が不安定です。安定して動作させるにはどこを直せばよいでしょうか? OSはwindows 98SE, IE6を使用しています。ブラウザのセキュリティはActiveX関連の物は全て有効かダイアログ表示に設定しています。

  • テキストファイルに一行文字を追加したい

    バッチ処理でテキストファイルの最後に文字列を追加する作業をやりたいのです。 普通の文字列ですと、1)のようにして上手くいきます。 ところが「"」の入った文字列を一行加えようと2)のようにすると、エラーになってしまいます。どうしたら前に進めるでしょうか? --------- 1)上手くいくケース ----------- Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.GetFile("C:\test\hoge.txt") Set f = tmpFile.OpenAsTextStream(8, -2) f.Write("一行追加しました") f.close Set f = Nothing Set tmpFile = Nothing Set fso = Nothing --------- 2)上手くいかないケース ----------- Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.GetFile("C:\test\hoge.txt") Set f = tmpFile.OpenAsTextStream(8, -2) f.Write("一行"追加"しました") f.close Set f = Nothing Set tmpFile = Nothing Set fso = Nothing

  • 「?」の入った文字列置換を、RegEx.Replaceで行いたい

    WSHを使い、あるhtmファイルの中にある特定の文字列を、RegEx.Replaceを使って置換しようとしています。通常の文字列置換についてはなんとか成功しているのですが、下記のケースで壁に当たっています。前に進める為にはどうしたらよいか、ヒントをご存知の方がいれば大変有り難く思います。 今回作業の特徴としては 1)置換前の文字列の中にメタキャラ「?」が含まれており、 2)置換前の文字列は、DBから読み込んできた文字列である の2点です。(ちなみに1だけでは成功しているのですが、1と2が組み合わさると上手くいきません) 具体的には、下記のサンプルで置換前の文字列を url_before = "test.asp\?param=999" (?についてはエスケープ文字付与) のように明示的に書いてやると置換に成功しました。ところがDBから取得してきた文字列で置換をしようとしても失敗となります。 たとえばrs.fields("item")の中身が"test.asp?param=999"だったとして、先ほどの箇所を url_before = replace(rs.fields("item"), "?", "\?") とすると、置換されないのです。 '----- サンプル ----- Set fso = CreateObject("Scripting.FileSystemObject") Set regEx = New RegExp Set inFile = fso.OpenTextFile("c:\hoge\test1.htm") Set outFile = fso.CreateTextFile("c:\hoge\test1_wk.htm") ◆動くケース:url_before = "test.asp\?param=999" ◆動かないケース:url_before = replace(rs.fields("item"), "?", "\?") url_after = "test_999.htm" regEx.pattern = url_before repStr = url_after Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close

  • html組込み時のカレントフォルダについて

    本日、初めてjavascriptにチャレンジしました。 カレントフォルダについて、わからないため教えてください。 ■D:/data/にtest.html,test.jsを作成 ■test.html内にtest.jsを組み込み ■test.jsに下記を記載 var fso = new ActiveXObject("Scripting.FileSystemObject"); var myFolder = fso.GetFolder("."); var myFiles = new Enumerator(myFolder.Files); while(!myFiles.atEnd()){ document.write(myFiles.item()); myFiles.moveNext(); } D:/data/内のファイル一覧を表示させたかったのですが、 結果は、デスクトップのファイル一覧が表示されました。 fso.GetFolder(".")でカレントフォルダを指定していますが、 この定義はどうなっているのでしょうか? 不慣れなため、質問の仕方も簡潔でなくすみません。 宜しくお願いいたします。

  • 終了していない文字列型の定数です・・・と出ます。

    javaScript使用可能・不可能の表示 ↓ 「OK」「キャンセル」ボタン付きのダイアログボックスの表示 ↓ OK→次のページへ キャンセル→ダイアログボックスを閉じる というようなスクリプトを作ったのですが、最初は上手く動いたのですが、すこしダイアログボックスの文字を変更すると、終了していない文字列型の定数です・・・ というエラーを吐いてきます。 どうやらここの文字が多すぎるとエラーを吐くのですがどうなのでしょうか。 http://mekipedia.cocolog-nifty.com/test.txt これがタグのデータです。 このテキストデータでは表示できるようなので、文字コードか何かでしょうか・・・。 では、よろしくお願いします。

  • ActiveXobjectが作成できない

    こんにちは。 初めて投稿します。 現在、JavaScriptでエクセルファイルを作成するWEBプログラムを開発中です。 全くの初心者なので、ネットでどなたかが紹介していたコードを参考にできるかどうか実験中です。 自分のPCでは動くのですが、サーバーに上げると var fso = new ActiveXObject('Scripting.FileSystemObject'); のところで 「オートメーション サーバーはオブジェクトを作成できません。」 というエラーが発生します。 セキュリティの問題かと思い設定を変更したりしましたが、変化なしです。 サーバーにはMicroSoft Officeは入っていません。 でも、JavaScriptならクライアント側の環境を利用できるかなと思ったのですが… 根本的にこの考え方が間違っているんですかね? もし、何か方法があれば教えていただければうれしいです。 <script type="text/javascript"> //エクセルの起動 function withExcel(visible, func) { var excel = new ActiveXObject("Excel.Application"); excel.Visible = visible; excel.DisplayAlerts = false; try { func(excel); } finally { excel.Quit(); } } function withNewWorkbook(filename, visible, func) { withExcel(visible, function (excel) { var workbook = excel.Workbooks.Add(); try { try { func(workbook); } finally { workbook.SaveAs(filename); } } finally { workbook.Close(); } }); } function test() { var fso = new ActiveXObject('Scripting.FileSystemObject'); withNewWorkbook(fso.getAbsolutePathName("エクセルテスト.xls"), false, function (workbook) { var worksheet = workbook.Worksheets(1); worksheet.Cells(1, 1).value = "テストです!!"; } ); </script> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="エクセルのテストです!"></asp:Label> <input type="button" value="ボタン1" onclick="test()"/><br/> </div> </form> </body>

  • VB6でUTF-8ファイルの読取りを

    VB6で、日本語と簡体文字の混在するUTF-8コードのファイル "c:\testfile.txt" を読み取って変数に入れて、取り扱える実例を作っていただけませんでしょうか? VB6では、FileSystemObjectなどを使うようですが、さっぱり使い方が分りません。私は昔、コボルやフォートランをかじったことがあり、VBの基礎は使えるのですが、FileSystemObjectなどはどうも分りません。Visual Basic.NETを使えばUTF-8も簡単に使えるようですが、難しくて歯が立たずVB6でやろうとしています。 ご参考;「次のコードは、FileSystemObject を使って、ファイルの読み取りまたは書き込みに使用できる TextStream オブジェクトを取得する例です。」とあるのですが、ファイルから変数に読み取るために使うには如何使えば良いのか、分りません。 Dim fso, MyFile Set fso = CreateObject("Scripting.FileSystemObject") Set MyFile = fso.CreateTextFile("c:\testfile.txt", True) MyFile.WriteLine("This is a test.") MyFile.Close また、下記は「指定したファイルを開き、開いたファイルの読み取り、または追加書き込みに使用できる TextStream オブジェクトを返します。」とあるのですが、これとの関係もよくわかりません。 object.OpenTextFile(filename[, iomode[, create[, format]]]) よろしくお願いいたします。

専門家に質問してみよう