|
IFB howmany = 1 then repeatTime = 15 ELSE for repeatTime = 16 - howmany to 15 ENDIF
今まで使えていた、上記のコードなんですが(古いバージョンのUWSC) 別のPC(最新のUWSC)で実行するとエラーになってしまいました。
IFB(IF-)ENDIFがループかブロックを跨いでいる、もしくはブロックの対応が取れていない:FOR REPEATTIME = 16 - HOWMANY TO 15 48行目:IFB HOWMANY = 1 THEN
これは、どのように修正が必要でしょうか・・・?
|
No.4815 2017/12/12(Tue) 14:02:11
|
☆ Re: ENDIFがループかブロックを跨いでいる / stuncloud |
|
|
ifb else for endif next
のようになっているのではないかと推測されます (for-nextにendifのみが紛れ込んでいる状態)
修正の仕方はどういう処理をするかによりますが
・else-endif内にfor-nextを書く ifb else for next endif
・for-nextをifから出す ifb else endif for next
あたりでしょうか ループが必要な場所にfor-nextを移動してください
もしよくわからないようでしたらendif以降でnextが出てくる行まで貼ってください この情報だけだと最適な解をお答えできません
|
No.4817 2017/12/12(Tue) 15:59:07
|
|
☆ Re: ENDIFがループかブロックを跨いでいる / TMP |
|
|
path = "関連ファイル\HTML更新関連\"
howmany = INPUT("FSスマホトップページの新商品のHTMLを作成します<#CR>何商品分のHTMLを作成しますか?","3") itemID = "j-452" startLine = 1
IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True IE.Navigate("URL")
///////////////////////////// //サーバーからファイルをダウンロード print "ftpに接続してサーバーから最新ファイルをダウンロード"
ftpSpDownload = path + "01_ftpSpDownload.txt" cmdstr = "ftp -s:" + ftpSpDownload DOSCMD(cmdstr);
ftpPcDownload = path + "01_ftpPcDownload.txt" cmdstr = "ftp -s:" + ftpPcDownload DOSCMD(cmdstr);
////ここから処理 print "■futureshopトップページ用のHTML" id = fopen("M:\htdocs\xx-yy\templates\iPhone.html", f_read or f_write) pc = fopen("M:\htdocs\xx-yy\templates\newItem.html", f_read or f_write)
SELECT SLCTBOX(SLCT_BTN,0,"新作入荷?予約販売開始?","新作入荷","予約販売開始") CASE SLCT_1 //koumokuName = "新作入荷" koumokuName = "" CASE SLCT_2 koumokuName = "予約販売開始" SELEND
IFB howmany = 1 then repeatTime = 15 ELSE for repeatTime = 16 - howmany to 15 ENDIF
fdelline(id,repeatTime) fdelline(pc,repeatTime)
Repeat itemID = INPUT("商品コード(" + repeatTime + "個目)",itemID,"終了する") IE.Navigate("URLfs/photo/" + itemID) BusyWait(IE) body = IEGetSrc(IE, "BODY") until 0 = POSB("ページが見つかりません",body)
brandName = IEGetData(IE, "tag=p","id=pro") //ページの最初のテキストエリア内のデータを取得 brandName = betweenstr(brandName,""," ") //抜き出した文字から最初の半角スペースまでを抜き取る
productName = IEGetData(IE, "tag=p","id=pro") //ページの最初のテキストエリア内のデータを取得 REPEAT //抜き出した文字列から半角が消えるまで繰り返す productName = betweenstr(productName," ","") UNTIL POS(" ",productName) = 0
num = lengthb(productName) repeat productName = INPUT("商品名を変更しますか?。現在" + num + "byte(36byte以内に)",productName) num = lengthb(productName) until num < 37
price = IEGetSrc(IE, "body") price = BETWEENSTR(price,"<span class=<#DBL>itemPrice<#DBL>>","</span>") price = price + "(税込)"
folder = IEGetSrc(IE, "h2","0") //_01画像のh2タグを抜き出す folder = betweenstr(folder,"URLimages/",itemID) folder = betweenstr(folder,"","/")
GetTime(0) today = G_Time_YY+"/"+G_Time_MM+"/"+G_Time_DD+ koumokuName //今日の日付を取得 //金額あり fsUpdateDate = today + "<br />" + brandName + " " + itemID + "<br />" + productName + "<br />" + price fsUpdateDate = today + "<br />" + brandName + " " + itemID + "<br />" + productName fsCode = "<li class='flipitem'><a href='URLfs/photo/" + itemID + "'><img src='ファイルパス" + folder + "/" + itemID + "_01.jpg?_ex=200x200&s=2&r=1' width='200' height='200' alt='' /><br />" + fsUpdateDate + "</a></li>" //pcCode = "<li><a href='URLfs/photo/" + itemID + "'><img src='ファイルパス" + folder + "/" + itemID + "_01.jpg?_ex=200x200&s=2&r=1' width='200' height='200' alt='" + brandName + " " + productName + "のイメージ画像" + "' /><img src='ファイルパス" + folder + "/" + itemID + "_02.jpg?_ex=97x97&s=2&r=1' width='97' height='97' alt='" + brandName + " " + productName + "の各カラーの画像" + "' class='img02' /><img src='ファイルパス" + folder + "/" + itemID + "_03.jpg?_ex=97x97&s=2&r=1' width='97' height='97' alt='" + brandName + " " + productName + "の詳細画像" + "' class='img03' />" + fsUpdateDate + "</a></li>" pcCode = "<li><a href='URLfs/photo/" + itemID + "'><img src='ファイルパス" + folder + "/" + itemID + "_01.jpg?_ex=200x200&s=2&r=1' width='200' height='200' alt='' /><img src='ファイルパス" + folder + "/" + itemID + "_02.jpg?_ex=97x97&s=2&r=1' width='97' height='97' alt='' class='img02' /><img src='ファイルパス" + folder + "/" + itemID + "_03.jpg?_ex=97x97&s=2&r=1' width='97' height='97' alt='' class='img03' />" + fsUpdateDate + "</a></li>" fput(id, fsCode, startLine, f_insert) fput(pc, pcCode, startLine, f_insert) startLine = startLine + 1 print startLine + "行目に書き込み"
//next
fdelline(id,16) fdelline(pc,16) fclose(id) fclose(pc)
SELECT SLCTBOX(SLCT_BTN,0,"PCサイト、スマホサイトアップしますか?","アップする","取り消す") CASE SLCT_1 CASE SLCT_2 exitexit SELEND
///////////////////////////// //サーバーにファイルをアップロード print "ftpでサーバーにアップロード"
ftpSpUpload = path + "01_ftpSpUpload.txt" cmdstr = "ftp -s:" + ftpSpUpload DOSCMD(cmdstr);
ftpPcUpload = path + "01_ftpPcUpload.txt" cmdstr = "ftp -s:" + ftpPcUpload DOSCMD(cmdstr);
print "終了しました"
////////////////////////////////////////////////// // BusyWait(IE) //////////////////////////////////////////////////
Procedure BusyWait(IE) Sleep(0.1) // Wait Const TIME_OUT = 5.0 tm = Gettime() repeat Sleep(0.1) if Gettime() - tm > TIME_OUT IE.refresh //10秒経過してもページを表示しきれないときにリフレッシュして10秒待つ Sleep(10.0) endif until (! ie.busy) and (ie.readyState=4) Sleep(0.1) Fend
|
No.4821 2017/12/12(Tue) 18:31:30
|
|
☆ Re: ENDIFがループかブロックを跨いでいる / TMP |
|
|
stuncloud 様
ありがとうございます! 全体像が分かるように記載をしてみました。
アドバイス通りにやってみたがダメでした・・・ こちらを見て、何かお分かりになりますでしょうか?
|
No.4822 2017/12/12(Tue) 18:32:48
|
|
☆ Re: ENDIFがループかブロックを跨いでいる / しゅん |
|
|
すごいですね、これで動くとは。
IFB howmany = 1 then repeatTime = 15 ELSE for repeatTime = 16 - howmany to 15 ENDIF
論理的に推理してみたところ、上記の部分は
for repeatTime = 16 - howmany to 15
だけで良いと感じました。 howmany = 1の場合、else側で処理したとしても、repeatTime = 15で1回処理されるだけです。
|
No.4824 2017/12/12(Tue) 20:18:09
|
|
☆ Re: ENDIFがループかブロックを跨いでいる / TMP |
|
|
しゅん様
なんとか動きました!
よくわかってない素人が、色々なサイトを参考にしてなんとか作っている状態です・・・ 力技・・ですね。
安価で有料で制作してくれるサービス(個人事業さんなど)あればいいのですが・・・ あれば是非ご紹介して欲しいです。
ご協力ありがとうございました!
|
No.4825 2017/12/12(Tue) 22:26:08
|
|