亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unit1.~pas

?? 一個小學生出題器
?? ~PAS
字號:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg, ComCtrls,DateUtils,
  XLSReadWriteII2, ApplyFormat, CellFormats2, BIFFRecsII2,XLSFonts2;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    Bevel1: TBevel;
    Label4: TLabel;
    Edit1: TEdit;
    Bevel2: TBevel;
    Memo1: TMemo;
    ComboBox1: TComboBox;
    Label9: TLabel;
    Image2: TImage;
    Label3: TLabel;
    ComboBox2: TComboBox;
    SaveDialog1: TSaveDialog;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Key1Up(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    QCount:integer;     //問題數量
    MaxNum:integer;     //最大數值
    OperandNum:integer;//多少元操作數運算
    QList:TstringList;//問題列表
    AList:TstringList;//答案列表
    XLS: TXLSReadWriteII2;
    procedure init;
    procedure Builder;

    procedure ExportToXls;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses expr;

{$R *.dfm}
Function BookLeftSpace(s:string;len:integer):string;
begin
    while length(s)<Len do s:=' '+s;
    result:=s;
end;
Function BookRightSpace(s:string;len:integer):string;
begin
    while length(s)<Len do s:=s+' ';
    result:=s;
end;
Function StringToint(s:string;def:integer=0):integer;
begin
    result:=def;
    s:=trim(s);
    if s='' then exit;
    try
      result:=strtoint(s);
    Except
      result:=def;
    end;
end;
Function showstr(str:string;F:boolean=False;Titlestr:string='注意'):boolean;
begin
      result:=False;
      if not F then
      begin
          application.MessageBox(pchar(str),pchar(titlestr),MB_OK);
          exit;
      end;
      result:=application.MessageBox(pchar(str),pchar(titlestr),MB_OKCancel)=IDOK;
end;
procedure TForm1.init;
begin
    QCount:=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    Randomize;
    QCount:=0;//問題數量
    OperandNum:=0;//操作數個數
    QList:=TstringList.Create;//問題列表
    AList:=TstringList.Create;//答案列表
    MaxNum:=0;
    XLS:=TXLSReadWriteII2.Create(self);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
    XLS.free;
end;
Function RunExpression(s:string):integer;
var
  yacc: TYacc;
  Lex: TLex;
  B: SmallInt;
begin
  result:=-1;
  if Trim(s) = '' then Exit;
  yacc := TYacc.Create;
  Lex := TLex.Create;
  yacc.ylex := Lex;

  Lex.llib.yyinput := s + ';';
  //yacc.GetFuncValue := GetFuncValue;
    if yacc.yyparse = 0 then
      result:=stringtoint(Lex.llib.yyoutput,-1);
end;
procedure TForm1.Builder;
const p:array[0..1] of string=('-','+');
var //Expressions:TstringList;
    i,j,k,oper:integer;
    ExpressionIsOK:boolean;
    s,Str:string;
begin
    //Expressions:=TstringList.create;
    QList.clear;
    AList.Clear;
    for i:=0 to QCount-1 do
    begin
        ExpressionIsOK:=false;
        while not ExpressionIsOK do
        begin
            j:=1;
            //Expressions.Clear;
            Str:='';
            while j<OperandNum*2 do
            begin
                if odd(j) then
                begin
                    s:=inttostr(random(MaxNum));
                    //Expressions.Add(s);
                    str:=str+s;
                    if (j>1) and (RunExpression(str)<0) then
                        break;
                end
                else
                begin
                    Oper:=random(100);
                    Oper:=ord(odd(Oper));
                    //Expressions.Add(p[Oper]);
                    str:=str+p[Oper];
                end;
                inc(j);
            end;
            if (j>=OperandNum*2) and (QList.IndexOf(Str+' =' )=-1) then
               ExpressionIsOK:=true;
        end;
        QList.Add(Str+' = ');
        AList.Add(inttostr(RunExpression(Str)));
    end;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
    QCount:=stringtoint(trim(edit1.text),0);
    if QCount<=0 then
    begin
        showstr('請輸入正確的出期數量!');
        exit;
    end;
    OperandNum:=Combobox2.ItemIndex;
    if OperandNum<0 then
    begin
        showstr('請選擇適合的操作數個數!(多少個數的加減)');
        exit;
    end;
    OperandNum:=OperandNum+2;
    MaxNum:=Combobox1.ItemIndex;
    if MaxNum<0 then
    begin
        showstr('請選擇正確的最大運算數值范圍');
        exit;
    end;
    case MaxNum of
       0  : MaxNum:=10;
       1  : MaxNum:=20;
       2  : MaxNum:=30;
       3  : MaxNum:=50;
       4  : MaxNum:=100;

    end;
    Builder;
    ExportToXls;
end;

procedure TForm1.ExportToXls;
var FName:string;
    i:integer;
begin

    SaveDialog1.FileName:='小學數據題目與答案'+formatdatetime('yyyymmdd-hhnn',now)+'.xls';
    if not SaveDialog1.Execute then exit;
    FName:=SaveDialog1.FileName;
    if fileExists(FName) then
    begin
        if not showstr('你需要保存的文件已經存在,請確定是否需要覆蓋這個文件?'+FName,true) then
            exit;
    end;
    
    XLS.Filename := FName;
    XLS.Sheets.Clear;
    XLS.Sheets.Add;
    XLS.Sheets.Add;
    with XLS.Sheets[0] do
    begin
        Name:='題目';
        DisplayName:='題目';
        DefaultColWidth:=15;

        for i:=0 to QCount-1 do
        begin
            AsString[0,3+i] :='['+BookLeftSpace(inttostr(i+1),3)+']';
            AsString[1,3+i] :=BookLeftSpace(QList[i],12);
            Cell[0,3+i].FontSize:=14;
            Cell[1,3+i].FontSize:=14;
            Cell[1,3+i].HorizAlignment:=chaRight;
        end;
        AutoWidthCol(0);
        AutoWidthCol(1);

        AsStringRef['B1'] := '小學數學加減法測驗卷';
        Range.ItemsRef['B1:D1'].FontSize := 20;
        Range.ItemsRef['B1:D1'].FontStyle := [xfsBold];

    end;

    with XLS.Sheets[1] do
    begin
        Name:='答案';
        DisplayName:='答案';
        DefaultColWidth:=15;

        for i:=0 to QCount-1 do
        begin
            AsString[0,3+i] :='['+BookLeftSpace(inttostr(i+1),3)+']';
            AsString[1,3+i] :=BookLeftSpace(QList[i],12);
            AsString[2,3+i] :=AList[i];
            Cell[0,3+i].FontSize:=14;
            Cell[1,3+i].FontSize:=14;
            Cell[2,3+i].FontSize:=14;
            Cell[1,3+i].HorizAlignment:=chaRight;
            Cell[2,3+i].HorizAlignment:=chaLeft;
            
        end;
        AutoWidthCol(0);
        AutoWidthCol(1);

        AsStringRef['B1'] := '小學數學加減法測驗卷';
        Range.ItemsRef['B1:D1'].FontSize := 20;
        Range.ItemsRef['B1:D1'].FontStyle := [xfsBold];

    end;



    XLS.Write;

    
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
    close

end;


Function AllIsDigit(s:string):boolean;
var pStr:pchar;
begin
    result:=false;
    pStr:=pchar(s);
    while pStr^<>#0 do
    begin
        if (pStr^<'0') or (pStr^>'9') then Exit;
        inc(pStr);
    end;
    result:=True;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    //if not  AllIsDigit(key) then  key:=#0;
    if not AllIsDigit(trim(Edit1.Text+key)) then Key:=#0;
end;

procedure TForm1.Edit1Key1Up(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if not AllIsDigit(trim(Edit1.Text)) then Key:=0;
end;




end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
轻轻草成人在线| 国内精品伊人久久久久影院对白| 欧美在线观看18| 高清av一区二区| 韩国在线一区二区| 亚洲成人高清在线| 亚洲综合图片区| 亚洲精选免费视频| 中文字幕亚洲综合久久菠萝蜜| 国产天堂亚洲国产碰碰| 在线亚洲一区二区| 日本韩国精品在线| 在线亚洲人成电影网站色www| 不卡av在线网| 99久久精品国产一区二区三区 | 亚洲视频在线一区观看| 久久久久久久久一| 国产午夜一区二区三区| 2020日本不卡一区二区视频| 日韩欧美一二三四区| 欧美成人精品福利| 欧美伊人精品成人久久综合97| 一本色道久久综合精品竹菊| 狠狠色狠狠色综合日日91app| 91国模大尺度私拍在线视频| 成人小视频免费在线观看| 国产伦精品一区二区三区免费迷 | 亚洲色图欧洲色图| 亚洲欧美日韩国产综合在线 | 久久精品国产免费看久久精品| 日韩黄色免费网站| 强制捆绑调教一区二区| 精品亚洲porn| av电影在线不卡| 欧美人与性动xxxx| 精品区一区二区| 日本一二三四高清不卡| 亚洲女厕所小便bbb| 亚洲国产欧美在线人成| 午夜精品福利在线| 麻豆91免费看| 成人高清视频免费观看| 欧美午夜精品理论片a级按摩| 欧美mv和日韩mv国产网站| 国产精品久久综合| 亚洲国产视频一区| 国产又粗又猛又爽又黄91精品| 成人黄色免费短视频| 欧美日韩成人一区| 国产精品成人在线观看| 青青国产91久久久久久| 99精品久久99久久久久| 日韩欧美国产成人一区二区| 一区二区三区欧美激情| 国产最新精品精品你懂的| 欧美日韩国产影片| 精品国产伦一区二区三区观看方式| 日本不卡123| 欧美精品一区二区三区四区| 国产精品一二三四五| 久久午夜电影网| 国产成人在线视频播放| 亚洲欧洲精品一区二区三区| 色妹子一区二区| 婷婷成人激情在线网| 欧美一区国产二区| 国产不卡免费视频| 亚洲综合色区另类av| 日韩欧美国产一二三区| 99视频在线精品| 久久精品国产色蜜蜜麻豆| 欧美国产精品中文字幕| 欧美日韩高清一区二区不卡| 精品一区二区三区在线播放视频| 欧美国产欧美综合| 777午夜精品视频在线播放| 成人永久看片免费视频天堂| 亚洲一区二区美女| 中文字幕高清一区| 久久久国产精华| 一区二区三区产品免费精品久久75| 精品亚洲成av人在线观看| 久久久精品tv| 99久久精品免费| 午夜久久久久久久久| 26uuu国产一区二区三区| 国产一区在线不卡| 亚洲欧美电影一区二区| 欧美丰满高潮xxxx喷水动漫| 久久精品99国产国产精| 久久精品一区蜜桃臀影院| 不卡免费追剧大全电视剧网站| 亚洲国产一二三| 久久久久国产精品厨房| va亚洲va日韩不卡在线观看| 日韩精品免费视频人成| 欧美国产一区在线| 91精品一区二区三区久久久久久 | 欧美性受xxxx| 国产盗摄一区二区| 图片区小说区国产精品视频| 日本一区二区免费在线| 欧美精品一级二级三级| 一本色道久久综合亚洲精品按摩| 麻豆精品一区二区三区| 亚洲综合在线五月| 久久免费精品国产久精品久久久久| 日韩免费观看2025年上映的电影 | 欧美日韩中文一区| 亚洲老司机在线| 欧美日韩一区精品| 五月开心婷婷久久| 欧美精三区欧美精三区| 日韩电影免费在线观看网站| 日韩亚洲欧美一区| 在线视频你懂得一区| 国产夫妻精品视频| 美女www一区二区| 热久久国产精品| 亚洲1区2区3区4区| 一区二区三区在线播放| 国产精品久久久久久久久晋中 | 欧美一个色资源| 制服.丝袜.亚洲.另类.中文| 成人福利视频网站| 99久久精品国产一区二区三区| 国产成人综合精品三级| 国产精品白丝jk白祙喷水网站| 国产激情精品久久久第一区二区| 国产一区二区三区视频在线播放| 裸体歌舞表演一区二区| 国产一区二区三区香蕉 | 欧美日韩亚洲综合| 欧美一区二区三区四区久久| 日韩一二在线观看| 久久久精品黄色| 亚洲男人的天堂一区二区| 亚洲午夜精品在线| 久久成人免费电影| 99久久久无码国产精品| 在线播放欧美女士性生活| 精品成人a区在线观看| 中文字幕高清一区| 日韩中文字幕区一区有砖一区| 麻豆成人91精品二区三区| 成人激情免费网站| 69久久99精品久久久久婷婷 | 欧美国产一区视频在线观看| 一区二区在线免费| 久久99精品久久久| 欧美日韩中文字幕精品| 国产日产欧美一区| 午夜精品久久久久久久| www.性欧美| 日韩欧美亚洲一区二区| 一区二区三区免费看视频| 韩国三级在线一区| 91精品久久久久久久99蜜桃| 成人免费一区二区三区在线观看 | 日韩免费观看高清完整版在线观看| 国产亚洲精品精华液| 午夜成人在线视频| av激情亚洲男人天堂| 国产视频一区不卡| 国产呦萝稀缺另类资源| 欧美日韩亚洲综合| 亚洲国产aⅴ天堂久久| av网站一区二区三区| 久久久电影一区二区三区| 日本亚洲三级在线| 欧美日韩一区二区三区在线看 | 免费观看30秒视频久久| 欧美色视频一区| 污片在线观看一区二区| 欧美在线一区二区| 亚洲成a天堂v人片| 在线播放欧美女士性生活| 午夜成人在线视频| 欧美一区二区二区| 国产一区二区免费在线| 国产亚洲欧洲997久久综合 | 色综合天天做天天爱| 一区二区成人在线视频 | 日韩一区日韩二区| 91在线观看一区二区| 一个色在线综合| 欧美一级片在线看| 国产成人综合视频| 亚洲人快播电影网| 欧美一卡二卡在线| 国产精品亚洲а∨天堂免在线| 久久久蜜桃精品| 色哟哟亚洲精品| 免费看精品久久片| 国产精品女主播av| 欧美区一区二区三区| 国产一区二区女| 一区二区三区**美女毛片| 欧美一区二区三区男人的天堂| 国产aⅴ综合色|