Ruby 初心者スレッド Part 23
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/11/20(木) 04:30:21【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
【最新安定版の Ruby1.8.7 の使用をお勧めします】
※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
1.9 の新機能の一部が利用可能なので初学者にお勧めです。
※ただし十分安定しているとは言えないので
プロダクション環境での利用にはお勧めしません。
関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0185rubyの初心者
2008/12/05(金) 18:34:240186デフォルトの名無しさん
2008/12/05(金) 18:44:57おまえ、rubyの初心者じゃなくてPython上級者だろ。
0187デフォルトの名無しさん
2008/12/05(金) 18:50:36難しいという理由からなら、こんなに一般的に禁止が広まるわけがない
0188デフォルトの名無しさん
2008/12/05(金) 18:55:02sym = n.zero? ? :hoge : :fuga
とかやられるとわけがわからない。
sym = if n.zero? then :hoge else :fuga end
ほらわかりやすい。
0189デフォルトの名無しさん
2008/12/05(金) 18:56:290190デフォルトの名無しさん
2008/12/05(金) 18:57:55変なとこで改行してカッコつけてネストする奴が出てくるのが嫌われてる理由の一つだと思う
そんなに複雑なら if 文で書くかリファクタリングしろ
0191デフォルトの名無しさん
2008/12/05(金) 19:02:21もっと2〜3文字のキーワードで区分けされていると読み落としがないんだが
0192デフォルトの名無しさん
2008/12/05(金) 19:05:210193デフォルトの名無しさん
2008/12/05(金) 19:18:320194デフォルトの名無しさん
2008/12/05(金) 19:28:41>sym = n.zero? ? :hoge : :fuga
>とかやられるとわけがわからない。
そうか、初心者はこの程度でもわけがわからなくなるのか。
>sym = if n.zero? then :hoge else :fuga end
>ほらわかりやすい。
どこがだよ。
0195デフォルトの名無しさん
2008/12/05(金) 19:45:21条件演算子で短くまとめた条件分岐はほぼ100パーセントの確率で
のちのち長い if 文に書き換える羽目になるというのがどうにも
嫌われる人はここで条件演算子使用を強行する
0196デフォルトの名無しさん
2008/12/05(金) 20:00:260197デフォルトの名無しさん
2008/12/05(金) 20:22:43ifの返す値を使うプログラムは読みにくい
0198デフォルトの名無しさん
2008/12/05(金) 21:21:19[1, 2, 3].send("[](1)") が 2 を返すような
0199デフォルトの名無しさん
2008/12/05(金) 21:23:200200173
2008/12/05(金) 21:26:57条件演算子が難しいなんて書いてませんよ・・・私・・・
n = tokuten == 100 ? 9 : tokuten / 10
「tokuten」が100ならば「9」を「n」に代入、elseなら「tokuten/10」を「n」に代入ですよね
0201デフォルトの名無しさん
2008/12/05(金) 21:32:06うおー引数2個ーめんどー
ありがとうございます
0202デフォルトの名無しさん
2008/12/05(金) 22:12:43アー、悪い、
>条件演算子、思いもつかなかった方法です。
って書いてあるから、初心者には理解するのが難しいのかと思った。
わかってるならすまんかった。気を悪くせんでくれ。
0203デフォルトの名無しさん
2008/12/06(土) 01:23:580204デフォルトの名無しさん
2008/12/06(土) 01:29:540205デフォルトの名無しさん
2008/12/06(土) 01:40:02メソッド呼び出しているだけの行で
[BUG] Segmentation faultってバグ落ちしたメッセージが表示されるですけど、
これってどこでバグっているのか原因わかりますか?
後、ルビーのバグ回避のプログラミングの仕方ってあるでしょうか?
ルビーの落とし穴というページ見ても今一バグが発生する原因や回避の方法が分からないもので。
0206デフォルトの名無しさん
2008/12/06(土) 01:42:36ルビーのバージョンは1.8.6で無料サーバでつかうため、パッチやバージョンアップ以外の方法でバグ回避方法をおしえてください。
0207デフォルトの名無しさん
2008/12/06(土) 01:44:160208デフォルトの名無しさん
2008/12/06(土) 01:44:39ruby本体のbugだから、まずは最新版で試してみて。
それでも再発するなら、出来る限り余分な部分を削った再現コードを作って
ここか本スレかruby-listに晒せばおk。そのときruby -vの提示を忘れずに。
あとは偉い人がよろしくやってくれるはず。
0209デフォルトの名無しさん
2008/12/06(土) 01:47:13・・・まあ再現コード見せて。
そのコードを作ること自体が「回避の方法」だったりするし。
0210デフォルトの名無しさん
2008/12/06(土) 01:58:16openでファイル作成やREXML::Documentとグローバル配列とメソッドだけでね。
今やったらなぜメソッド中の注釈「# DATAURL 」の行を指して
[BUG] Segmentation fault
ruby 1.8.6 (2008-08-11) [i386-mswin32]
って出ました。わけわからん。
0211デフォルトの名無しさん
2008/12/06(土) 02:00:280212デフォルトの名無しさん
2008/12/06(土) 02:05:23RDEでデバッグしながらですがけど...
鯖だとデバッグできないですから..
0213デフォルトの名無しさん
2008/12/06(土) 02:18:57再現コードがないと、なんともコメントできない。
0214デフォルトの名無しさん
2008/12/06(土) 02:19:250215デフォルトの名無しさん
2008/12/06(土) 02:19:340216デフォルトの名無しさん
2008/12/06(土) 02:52:30Segmentation faultだけでは、アドバイスする側にもわけわからん
0217デフォルトの名無しさん
2008/12/06(土) 02:53:36何かが分かる気はしないけどね。
0218デフォルトの名無しさん
2008/12/06(土) 08:57:37それ以上のことはなんもならん
0219デフォルトの名無しさん
2008/12/06(土) 10:53:07再現コード無いのは無理だなあ
0220デフォルトの名無しさん
2008/12/06(土) 14:02:120221デフォルトの名無しさん
2008/12/06(土) 14:11:450は成功、1かそれ以上は失敗
ということで、ただの例ですな
0222デフォルトの名無しさん
2008/12/06(土) 14:18:02exit(3)の3はmanのセクション番号でライブラリコールだってこと。
詳しくはman man
他にもwrite(2)とかがある
0223デフォルトの名無しさん
2008/12/06(土) 14:19:29多分それ違う
>220
exit(3) のリンク先を見れば判ると思うけど、この exit はC言語の関数の exit() のこと。
要はRubyが内部でやってる処理を説明している。
Linuxのマニュアルのセクション3にあるexit()の通りの処理をしてるよ、という意味。
0224デフォルトの名無しさん
2008/12/06(土) 15:51:10>>221-223
ありがとうございました。
0225デフォルトの名無しさん
2008/12/06(土) 16:25:24なんでだよ
Rubyってなんでもできる万能言語って聞いたんだが
0226デフォルトの名無しさん
2008/12/06(土) 16:30:20ではその人を責めてください
サンタクロースが実在しなかったからといってサンタ役のお父さんをバシバシ叩くのはやめてください
0227デフォルトの名無しさん
2008/12/06(土) 22:22:34ワロタw
0228デフォルトの名無しさん
2008/12/06(土) 23:51:21Rubyのプログラム上からエクセルに渡して動かす、みたいなことはできますか?
0229デフォルトの名無しさん
2008/12/07(日) 00:35:40呼び出す側の言語が何であろうと出来るんじゃない?
0230デフォルトの名無しさん
2008/12/07(日) 00:37:450231デフォルトの名無しさん
2008/12/07(日) 06:28:28puts とか getsがメソッドですよといわれたのは良いんですが
self.puts
とか、
100.to__s
とかはわかるのですが
gets.chompはなぜgetsの後ろにchompが付くんですか?
メソッドの前に付くのが普通だと思ってたので・・・
0232デフォルトの名無しさん
2008/12/07(日) 07:14:23self.gets.chomp
getsの結果に対してchompするということ
つーかgetsはレシーバ書かないほうが普通だと思うが…
0233デフォルトの名無しさん
2008/12/07(日) 07:36:31ありがとうございます
selfは書かないんですけど
rubyの練習に読んでる
http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=05
でselfが出てきたので聞いてみました。
0234デフォルトの名無しさん
2008/12/07(日) 07:50:48メソッドチェーンという概念がある(あくまで概念で、文法のようなものではない)
あるメソッドの返り値のオブジェクトのクラスのメソッドを
返り値を返すメソッド.返り値のクラスのメソッド
で動作させるものだ
関数的メソッドgetsの返り値は文字列であるStringクラスのオブジェクト(=インスタンス)だから、
Stringクラスのメソッドであるchompをメソッドチェーンで記述できる
あくまでメソッドの返り値(またはオブジェクトそのもの)のクラスが重要
返り値のクラスは常に意識しておくといい
0235デフォルトの名無しさん
2008/12/07(日) 08:31:30>gets.chompはなぜgetsの後ろにchompが付くんですか?
s = gets
s.chomp
を一行でかいたら
gets.chomp
になった、というだけのこと。
0236デフォルトの名無しさん
2008/12/07(日) 08:38:01難しい・・・(>_<)
>>235
なるほど
0237デフォルトの名無しさん
2008/12/07(日) 08:53:23何だかんだでチェーンが切れるOOPLは多い気がする
0238デフォルトの名無しさん
2008/12/07(日) 09:01:12が、ブロックとして {} を使うことにすると、クラスとメソッド用途によっては異常に便利
self や目的のオブジェクトが意図的に返るように作られてるブロックつきメソッドが多いのが効いてるな
def …
ナントカ
カントカ
yield s if s
s
end
という定義が多い
0239205
2008/12/07(日) 17:03:10それで現在も分からないですが、エラーメッセージの一番大事な所を表示し忘れました。
これで何が原因かおおよそわかりますか?
C:/Ruby/lib/ruby/1.8/rexml/text.rb:312: [BUG] Segmentation fault
ruby 1.8.6 (2008-08-11) [i386-mswin32]
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Complete(3)
最初自分の命令の312行かと思い込んで読んでいたのですが、よくみるとREXMLの中の312行で死亡したぽいですが。
0240デフォルトの名無しさん
2008/12/07(日) 17:28:44>>213-219
だれも「詳細なエラー文を」とは言ってないんだ。
0241205
2008/12/07(日) 18:03:35C:/Ruby/lib/ruby/1.8/rexml/text.rb:312
このエラーメッセージが意味するのは私のかいたプログラムの312行でエラー発生したのではなくて、
ルビー側が用意している
C:/Ruby/lib/ruby/1.8/rexml/text.rb
の312行目でエラーが発生したと解釈して間違いないですよね?
0242デフォルトの名無しさん
2008/12/07(日) 18:38:00それも完全な間違いでは無いが、限りなく間違いに近い。
本来Ruby側はどんな間違ったコードでも
「Rubyの」エラーを出して、コードとしては異常な終了でありながら
Rubyとしては正常に終了しなければならない。
ところが今回RubyはSegmentationFault…つまりRuby自体が異常な終了をしている。
だからRuby制作側としてはRubyを修正すべきなんだが
そのためにはSegmentationFaultが起こる状態を再現しないと
根本的な修正が難しい。
だから、その同じ状態を再現するコードがあったほうが良いのだよ。
…で、ライブラリ由来だとしてもライブラリをどう使うと起こるのか判らない。
SegmentationFaultである限り、貴方に責任はほぼ無いが
修正するには再現コードがないとキツいだろうなあという話。
0243デフォルトの名無しさん
2008/12/07(日) 18:42:43どちらにしろセグフォ起こす時点で
貴方自身では勘ぐらいしか対抗手段は無いよ。
で、実際のコードも再現コードも出せないなら
作者も多分修正不能で「原因不明のバグ」としか言えない。
0244デフォルトの名無しさん
2008/12/07(日) 18:44:40「ここの行が悪いんでエラーにしますよ」と言ってるわけじゃないから、
その「C:/Ruby/lib/ruby/1.8/rexml/text.rb:312:」はたいした情報にならない。
問題を起こすプログラムから、そこを削っても問題が同じように起こる場所は
全部削っていって、問題を起こす最小のセットを作るしか、Rubyを作ってる
側としても対処のしようがない(普通は)。
(たまに、実は把握済みの問題で「このパッチだよ」というのが出てくることも
あるがそれは宝くじのようなものなので)
0245デフォルトの名無しさん
2008/12/07(日) 18:45:26情報が少なすぎて判断出来ないし、ここでやる内容とも思えない
問題のソースとエラーメッセージの全てを出して作者に聞け
0246デフォルトの名無しさん
2008/12/07(日) 18:45:35最新版が使えないなら原因がネット上に落ちてるかも知れない。
…で、ネット上探すのは再現コードを見れないと厳しい。
0247デフォルトの名無しさん
2008/12/07(日) 20:10:06とりあえずコードが公開可能なものならどこかのアップローダーに公開すれば
いいわけで…。公開不可能ならMatzにそのソースを送りつければいいや。
ちなみに現在の最新安定版は1.8.7-p72だからそれを導入してみて
もう一度やってみれば?もしそれでもSegmentation Faultが出るなら
もう一度ここに来て。
Rubyの公式サイト
http://www.ruby-lang.org/ja/
0248デフォルトの名無しさん
2008/12/07(日) 20:53:45おまえはキモイな。rubyなんかやるよりも死んだ方がいいんじゃないか?どうせ友達なんかいないんだろw
0249デフォルトの名無しさん
2008/12/07(日) 20:58:180250デフォルトの名無しさん
2008/12/07(日) 21:14:00ロジックで敗れたのでヒステリーで対抗ですね、わかります。
0251デフォルトの名無しさん
2008/12/07(日) 21:20:15そのようだなw
0252デフォルトの名無しさん
2008/12/07(日) 21:49:47そんなカキコミしてる暇あったら、再現コードを用意しようぜ。
SegmentationFaultのバグは、再現コードがないとエスパーしようがない。
0253デフォルトの名無しさん
2008/12/07(日) 22:03:560254デフォルトの名無しさん
2008/12/07(日) 23:37:37結構前にruby-devにあったような。
0255デフォルトの名無しさん
2008/12/08(月) 03:09:02open命令でXMLファイルをサイト経由で取得した場合、
result = open(a2)
resultには#<File:0x2c07f2c>という内容しか入っていないようなのですが、
帰ってきたサイトのHTMLデータといいますか、そのようなものを見るにはどうしたらいいのでしょうか。
色々とテストしてみたら、どうも帰ってくるXMLデータが相手サーバの都合か何かで変な状態で返されものを
REXML::Document.newで開くとコケるみたいです。
どんなファイルのときにこけているか分かれば対策の打てるような気もします。
0256デフォルトの名無しさん
2008/12/08(月) 03:20:24>質問には以下を書くこと。へたくそな質問は再提出を要求される。
> ・エラーメッセージ(自力で訳さずなるべくそのままで)
エスパーしてみると、エラーを突っ返されても構わずREXML::Document.newに渡しているせいで
XMLとしては当然解釈できずパースエラーとか。
0257デフォルトの名無しさん
2008/12/08(月) 03:32:51>result = open(a2)
a2 が何かしらんけど、open() が返すのはFileオブジェクトじゃないかな。
だから
result = open(a2) {|file| file.read }
とか
file = open(a2)
result = file.read()
file.close()
とかすればいいんじゃないかな。
0258デフォルトの名無しさん
2008/12/08(月) 06:22:33そんなどのマニュアルにもどんな解説にも書いてあるようなことで>>255さんが詰まるはずないだろ馬鹿か?
[BUG] って書いてあるんだからこっちに落ち度はなくてRubyが一方的に悪いに決まってるだろ
0259デフォルトの名無しさん
2008/12/08(月) 06:35:540260デフォルトの名無しさん
2008/12/08(月) 06:56:35>>258と言いたくなるのは今回は仕方があるまい
openを一度でも自分で使ったことがあるならわかることだからな
書き込みの際に省略してるだけだと思うしかないわ
0261デフォルトの名無しさん
2008/12/08(月) 08:46:03openつーか、require 'open-uri'した上でのopenだよな?
0262デフォルトの名無しさん
2008/12/08(月) 08:58:18君はキモイからもうこのスレに来なくていい
0263デフォルトの名無しさん
2008/12/08(月) 09:46:33お前キモいな
0264デフォルトの名無しさん
2008/12/08(月) 10:03:510265デフォルトの名無しさん
2008/12/08(月) 10:21:05ひとりでスレ参加仕切るのはキモいわな
0266デフォルトの名無しさん
2008/12/08(月) 10:55:44用語がちょい怪しいからHTTPについてあんま知らんのかも知れんけど、
open-uriで返ってきたオブジェクトに返してはFileとかの他にOpenURI::Metaについても
調べてみてくれ。
向こうのサーバがOKなレスポンスを返したかとかの調べ方がわからんのだったらまさにそれ。
0267デフォルトの名無しさん
2008/12/08(月) 11:35:170268デフォルトの名無しさん
2008/12/08(月) 11:40:130269デフォルトの名無しさん
2008/12/08(月) 11:50:240270デフォルトの名無しさん
2008/12/08(月) 14:33:22#!/usr/local/bin/ruby -Ks
# REXML宣言 XMLデータを処理するための
require 'rexml/document'
require 'open-uri'
require 'uri'
result = open("http://pc11.2ch.net/test/read.cgi/tech/1227123021/l50")
# xmlデータ化してこの場合変数docに入れる。変数名は何でも可。
toto = result.read
doc = REXML::Document.new(result)
エラーメッセージ
------------------------------
C:/Ruby/lib/ruby/1.8/rexml/source.rb:149:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)
from C:/Ruby/lib/ruby/1.8/rexml/source.rb:16:in `new'
from C:/Ruby/lib/ruby/1.8/rexml/source.rb:16:in `create_from'
from C:/Ruby/lib/ruby/1.8/rexml/parsers/baseparser.rb:133:in `stream='
from C:/Ruby/lib/ruby/1.8/rexml/parsers/baseparser.rb:110:in `initialize'
from C:/Ruby/lib/ruby/1.8/rexml/parsers/treeparser.rb:9:in `new'
from C:/Ruby/lib/ruby/1.8/rexml/parsers/treeparser.rb:9:in `initialize'
from C:/Ruby/lib/ruby/1.8/rexml/document.rb:205:in `new'
from C:/Ruby/lib/ruby/1.8/rexml/document.rb:205:in `build'
from C:/Ruby/lib/ruby/1.8/rexml/document.rb:42:in `initialize'
from C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/rbC.tmp:15:in `new'
from C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/rbC.tmp:15
Complete(1)
------------------------------
どうもresult.readした後REXML::Document.newするとエラーするぽいですけど。
0271デフォルトの名無しさん
2008/12/08(月) 14:55:36#!/usr/local/bin/ruby -Ks
require 'rexml/document'
require 'open-uri'
require 'uri'
result = open("http://10plate.blog44.fc2.com/?xml")
toto = result.read
doc = REXML::Document.new(result)
0272デフォルトの名無しさん
2008/12/08(月) 15:09:220273デフォルトの名無しさん
2008/12/08(月) 15:16:28てかREXMLでパースしたなら元のファイル別にいらないじゃんね
0274デフォルトの名無しさん
2008/12/08(月) 15:56:10OLE詳しい人Help!
require 'win32ole'
module Excel
end
excel = WIN32OLE.new('Excel.Application')
excel.visible = false
excel.displayAlerts = false
file = "適当なフォルダパス"
book1 = excel.Workbooks.open(file)
sheet1 = book1.sheets(1)
sheet1.Range('A8').Select
chart1 = excel.Charts.Add()
chart1.Type=ExcelConst::XlLine
chart1.ChartType=ExcelConst::XlLineMarkers
chart1.SetSourceData Source=sh7.Range("B96:C106")
#続く
0275デフォルトの名無しさん
2008/12/08(月) 15:57:08#chart specifications
chart1.PlotBy=ExcelConst::XlColumns
chart1.Location Where=ExcelConst::XlLocationAsNewsheet
chart1.HasTitle ="True"
chart1.ChartTitle.Characters.Text = "hoge"
chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).HasTitle = "True"
chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).AxisTitle.Characters.Text = "fuga"
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).HasTitle = "True"
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).AxisTitle.Characters.Text = "hogehoge"
book1.save
excel.quit
#コード終了 エラーメッセージが続きます
0276デフォルトの名無しさん
2008/12/08(月) 15:57:40chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).HasTitle = "True"
^
C:/ruby/mysrc/rb3C.tmp:113: Invalid char `\223' in expression
C:/ruby/mysrc/rb3C.tmp:113: Invalid char `\276' in expression
C:/ruby/mysrc/rb3C.tmp:113: Invalid char `\223' in expression
C:/ruby/mysrc/rb3C.tmp:113: syntax error, unexpected tIDENTIFIER, expecting kEND
chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).AxisTitle.Characters.Text = "fuga"
^
C:/ruby/mysrc/rb3C.tmp:114: syntax error, unexpected tCONSTANT, expecting kEND
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).HasTitle = "True"
^
C:/ruby/mysrc/rb3C.tmp:115: Invalid char `\220' in expression
C:/ruby/mysrc/rb3C.tmp:115: syntax error, unexpected tIDENTIFIER, expecting kEND
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).AxisTitle.Characters.Text = "hogehoge"
^
C:/ruby/mysrc/rb3C.tmp:115: Invalid char `\220' in expression
C:/ruby/mysrc/rb3C.tmp:115: Invalid char `\224' in expression
C:/ruby/mysrc/rb3C.tmp:115: unterminated string meets end of file
C:/ruby/mysrc/rb3C.tmp:115: syntax error, unexpected $end, expecting kEND
Complete(1)
以上です。よろしくお願いします。
0277デフォルトの名無しさん
2008/12/08(月) 16:00:03まさかRubyの知識しかないのにWin32OLE使ってるわけじゃないよね?
0278デフォルトの名無しさん
2008/12/08(月) 16:50:49いや、そのまさかです。
マクロの記録→編集でVBAのコードを作ってそれをRubyに書き換えたつもりだったんですが・・・
0279デフォルトの名無しさん
2008/12/08(月) 18:44:44> C:/ruby/mysrc/rb3C.tmp:112: syntax error, unexpected tCONSTANT, expecting kEND
これがエラーの理由、「syntax error」は文法エラー
> chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).HasTitle = "True"
これがエラーの出た行の内容
> ^
(ブラウザだとずれてるだろうけど)これが上の行のエラーの発生してる位置を示してる
rb3C.tmpの112行目より前のどこかに閉じ忘れた " がある
エラーメッセージぐらい読めるようにならないと、いつまでたっても素人のままだぜ
0280デフォルトの名無しさん
2008/12/08(月) 20:32:41どこで閉じ忘れたのかを探しにくいからね
1.9.1だとendのインデントのずれを指摘するパッチが取り込まれたので
-wオプションつければずれてるendを警告してくれて
抜けてるendの位置をちょっと絞り込める
ところで、エラーメッセージの
tCONSTANT とか kENDってなに?
YACCのトークンとかいうやつ?
構文解釈中のエラー?
そんな内部の情報を直に見せられても、初心者にはわけわからんよ
ま、わからんなりに
「endじゃなくて定数が来ちゃってる文法エラー」だなということは理解できるんだけど
0281デフォルトの名無しさん
2008/12/08(月) 20:46:15閉じ忘れた文字列から、はるか後ろのほうでエラーが出る場合があるので
やっぱり最初の頃は修正が面倒だったな
エラーが出た個所で文字列を閉じてるのが ' か " を確認して、
それより前のクォート文字を検索する
閉じ忘れたのが %記法だったら面倒だが
たまに、Windowsのディレクトリパスを書くときに 'C:\test\' とかやって閉じ忘れたりする
0282デフォルトの名無しさん
2008/12/08(月) 20:47:57でも kEND の k ってなんじゃろ
0283デフォルトの名無しさん
2008/12/08(月) 20:56:280285274
2008/12/08(月) 22:04:13レスありがとうございます。
よく見直してみたんですが、「"」の閉じ忘れはありませんでした。
グラフの部分のコードを消して試しに他の操作をさせるとちゃんと動いたので
やはりグラフのコードのどこかが悪いようです。
■ このスレッドは過去ログ倉庫に格納されています