PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
23666 10/03/24 16:11:22 RE(4):PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By GREENS
23656 10/02/16 20:40:56 RE(3):PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By Pos
23655 10/02/05 09:04:03 RE(2):PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By GREENS
23652 10/02/04 14:09:45 RE(1):PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By Pos
23650 10/01/29 10:44:24 PB7.0: Unicodeで出力したLDIFファイルのASCII変換 By GREENS

カテゴリ:スクリプトの記述
日付:2010年03月24日 16:11 発信者:GREENS
題名:RE(4):PB7.0: Unicodeで出力したLDIFファイルのASCII変換

Posさん、こんにちは。

教えて頂いた方法だと
対象のデータが60000Byte以上なので、Stringにデータが入りきらず駄目でした。

そこで以下のようにしてみたのですが、ループでBlobMidするたびに
読み込み位置が大きく(20?40Byte程度)ずれてしまいます。

何がいけないか検討もつかずまた手詰まりになってしまいました・・・。

*****************************************************************
FOR ll_i = 1 to ll_loops
    ll_bytes_read = FileRead(li_FileNum, lbb_b)
    lbb_total     = lbb_total + lbb_b
NEXT

//ファイルオープン(出力ファイル)
li_FileNum2 = FileOpen(ls_出力ファイル, StreamMode!, Write!)
ll_blob_現在位置 = 0

//ファイル出力ループ
DO WHILE ll_blob_lengthwk <> 1
   //Blobデータを切り出し(String最大文字数である60,000 Byteを超えない範囲で)
   lbb_b_wk = BlobMid(lbb_total, (ll_blob_現在位置 + 1), 60000)

   //ユニコードからの変換(最後の文字がおかしな状態でもok)
   ls_出力ファイル = FromUnicode(lbb_b_wk)

   //文字を切り出し(最後の文字がおかしな状態なのを考慮し、1文字少ない状態で)
   ll_blob_lengthwk = LenW(ls_出力ファイル)
   IF ll_blob_lengthwk = 1 THEN
      ls_出力ファイル   = MidW(ls_出力ファイル, 1, (ll_blob_lengthwk + 0))
   ELSE
      ls_出力ファイル   = MidW(ls_出力ファイル, 1, (ll_blob_lengthwk - 1))
   END IF

   //ファイル出力
   FileWrite(li_FileNum2, ls_出力ファイル)

   //今回対象のByte数を確認
   lbb_b_wk2 = Blob(ls_出力ファイル)
   ll_blob_length2 = Len(lbb_b_wk2)

   //次ループ用に、現在読取済みの位置を設定(文字認識しない部分を正常に確認する)
   ll_i = -10
   DO WHILE ls_出力ファイル <> ls_出力ファイルwk
      ll_i = ll_i + 1
      lbb_b_wk = BlobMid(lbb_total, (ll_blob_現在位置 + 1), 60000 + ll_i)
      ls_出力ファイルwk = FromUnicode(lbb_b_wk)
   LOOP
   ll_blob_現在位置 = ll_blob_現在位置 + 60000 + ll_i

LOOP

FileClose(li_FileNum2)


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows XP
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.