2013年12月6日金曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の14章(ファイル入出力)、14.1(ファイル関数)、14.2(変換ルーチン)、14.3(バイナリファイルとASCIIファイル)、14.4(行終端にまつわる謎)、14.5(バイナリI/O)、14.6(バッファリングの問題)、14.7(バッファリングを行わないI/O)、14.8(ファイル形式の設計)、14.10(プログラミング実習)、実習 14-6をDartで解いてみる。

その他参考書籍

実習 14-6.

コード

sample.dart

import 'dart:html';

void main(){
  InputElement input = querySelector('#f0');
  InputElement run = querySelector('#run_dart');
  InputElement clear = querySelector('#clear');
  Element pre = querySelector('#pre0');
  Element div = querySelector('#d0');
  TextAreaElement textarea = new TextAreaElement();
  textarea.readOnly = true;
  textarea.style.width = '650px';
  textarea.style.overflow = 'auto';
  textarea.style.wordWrap = 'normal';
  var reader = new FileReader();
  run.onClick.listen((MouseEvent event){
    pre.text = window.navigator.userAgent + '\n';
    try{
      File file = input.files.first;
      reader.readAsText(file);
      reader.onLoad.listen((Event event){
        String contents = reader.result;
        RegExp pattern = new RegExp(r'\s+');
        Iterable<String> lines = contents.split('\n').sublist(1).map(
            (String s) => s.split(pattern).first);
        int i = 0;
        List<String> values = ['郵便番号', '住所', '名前', 'その他の情報'];
        lines.forEach((String s){
          textarea.text += '${values[i]}: $s\n';
          i += 1;
        });
        textarea.rows = lines.length;
        div.append(textarea);
        textarea.select();
      });
    } catch (e){
      div.text = '$e';
    }
  });
  textarea.onClick.listen((MouseEvent event) => textarea.select());
  clear.onClick.listen((MouseEvent event) => div.text = '');
}


0 コメント:

コメントを投稿