unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Buttons;type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    ListView1: TListView;
    Label1: TLabel;
    Edit1: TEdit;
    SpeedButton1: TSpeedButton;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    ListView2: TListView;
    Label2: TLabel;
    Edit2: TEdit;
    SpeedButton2: TSpeedButton;
    Button2: TButton;
    OpenDialog2: TOpenDialog;
    OpenDialog3: TOpenDialog;
    ListView3: TListView;
    Label3: TLabel;
    Edit3: TEdit;
    SpeedButton3: TSpeedButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure SpeedButton1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then Edit1.Text := OpenDialog1.FileName;
end;procedure TForm1.Button1Click(Sender: TObject);
var
  fs: TFileStream;
  ObjectId: DWORD;
  ObjectName: string;
  ObjectDesc: string;
  Address: Integer;
  Data: array[0..99] of Byte;
begin
  ListView1.Items.Clear;
  fs := TFileStream.Create(Edit1.Text, fmOpenRead);
  Address := $00000008;
  while(Address < $00066AE8) do
  begin
    fs.Seek(Address, soFromBeginning);
    fs.Read(Data, 4);
    ObjectId := Data[3] shl 24 + Data[2] shl 16 + Data[1] shl 8 + Data[0];
    fs.Seek(Address + $00A0, soFromBeginning);
    fs.Read(Data, 100);
    ObjectDesc := Copy(WideCharToString(@(Data[0])),1, 100);
    fs.Seek(Address + $04A0, soFromBeginning);
    fs.Read(Data, 100);
    ObjectName := Copy(WideCharToString(@(Data[0])),1, 100);
    with ListView1.Items.Add do
    begin
      Caption := IntToHex(Address, 8);
      SubItems.Add(IntToHex(ObjectId, 8));
      SubItems.Add(ObjectName);
    end;
    Address := Address + $04E0
  end;
  fs.Free;
end;procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  if OpenDialog2.Execute then Edit2.Text := OpenDialog2.FileName;
end;procedure TForm1.Button2Click(Sender: TObject);
var
  fs: TFileStream;
  DataSize: DWORD;
  DataCount: DWORD;
  ObjectId: DWORD;
  ObjectName: string;
  i, j, n: Integer;
  Address: Integer;
  Data: array[0..10240] of Byte;
begin
  ListView2.Items.Clear;
  fs := TFileStream.Create(Edit2.Text, fmOpenRead);
  N := 0;
  Address := $00000008;
  while(N < 85) do
  begin
    fs.Seek(Address, soFromBeginning);
    fs.Read(Data, 4);
    Address := Address + 4;
    DataSize := Data[3] shl 24 + Data[2] shl 16 + Data[1] shl 8 + Data[0];
    fs.Read(Data, 4);
    Address := Address + 4;
    DataCount := Data[3] shl 24 + Data[2] shl 16 + Data[1] shl 8 + Data[0];
    for i := 0 to DataCount - 1 do
    begin
      fs.Seek(Address, soFromBeginning);
      fs.Read(Data, 4);
      ObjectId := Data[3] shl 24 + Data[2] shl 16 + Data[1] shl 8 + Data[0];
      fs.Read(Data, DataSize - 4);
      case N of
        3, 6, 11, 36, 57: j := 8;
        19, 33, 45: j := 4;
        else j := 0;
      end;
      ObjectName := Copy(WideCharToString(@(Data[j])),1, DataSize - 4 - j);
      with ListView2.Items.Add do
      begin
        Caption := IntToHex(Address, 8);
        SubItems.Add(IntToHex(ObjectId, 8));
        SubItems.Add(ObjectName);
      end;
      Address := Address + DataSize;
      if Address = $000FEF50 then  Address := Address + $17;
      if Address = $002601EB then  Address := Address + $6B;
    end;
    Inc(N);
  end;
  fs.Free;
end;procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
  if OpenDialog3.Execute then Edit3.Text := OpenDialog3.FileName;
end;procedure TForm1.Button3Click(Sender: TObject);
var
  fs: TFileStream;
  TaskAddr: DWORD;
  TaskId: DWORD;
  TaskName: string;
  Address: Integer;
  Data: array[0..29] of Byte;
begin
  ListView3.Items.Clear;
  fs := TFileStream.Create(Edit3.Text, fmOpenRead);
  Address := $00000010;
  while(Address < $00002754) do
  begin
    fs.Seek(Address, soFromBeginning);
    fs.Read(Data, 4);
    TaskAddr := Data[3] shl 24 + Data[2] shl 16 + Data[1] shl 8 + Data[0];
    fs.Seek(TaskAddr, soFromBeginning);
    fs.Read(Data, 4);
    TaskId := Data[3] shl 24 + Data[2] shl 16 + Data[1] shl 8 + Data[0];
    fs.Seek(TaskAddr + 4, soFromBeginning);
    fs.Read(Data, 30);
    TaskName := Copy(WideCharToString(@(Data[0])),1, 30);
    with ListView3.Items.Add do
    begin
      Caption := IntToHex(TaskAddr, 8);
      SubItems.Add(IntToHex(TaskId, 8));
      SubItems.Add(TaskName);
    end;
    Address := Address + $04
  end;
  fs.Free;
end;procedure TForm1.Button4Click(Sender: TObject);
var
  i: Integer;
  f: TStrings;
begin
  f := TStringList.Create;
  for i:= 0 to ListView2.Items.Count - 1 do
    f.Add(ListView2.Items[i].Caption + '      ' + ListView2.Items[i].SubItems.Strings[0] + '      ' + ListView2.Items[i].SubItems.Strings[1]);
  f.SaveToFile(ExtractFilePath(Edit2.Text) + '\elements.txt');
  f.Free;
end;procedure TForm1.Button5Click(Sender: TObject);
var
  i: Integer;
  f: TStrings;
begin
  f := TStringList.Create;
  for i:= 0 to ListView3.Items.Count - 1 do
    f.Add(ListView3.Items[i].Caption + '      ' + ListView3.Items[i].SubItems.Strings[0] + '      ' + ListView3.Items[i].SubItems.Strings[1]);
  f.SaveToFile(ExtractFilePath(Edit3.Text) + '\tasks.txt');
  f.Free;
end;procedure TForm1.Button6Click(Sender: TObject);
var
  i: Integer;
  f: TStrings;
begin
  f := TStringList.Create;
  for i:= 0 to ListView1.Items.Count - 1 do
    f.Add(ListView1.Items[i].Caption + '      ' + ListView1.Items[i].SubItems.Strings[0] + '      ' + ListView1.Items[i].SubItems.Strings[1]);
  f.SaveToFile(ExtractFilePath(Edit1.Text) + '\gshop.txt');
  f.Free;
end;end.

解决方案 »

  1.   

    呵呵,会DELPHI的人怎么可能去研究易语言
      

  2.   


    不是看不起,而是非常看不起,我真还专门花了半个小时看了易语言的语法,看看到底怎么个汉语编程法。看了一会儿就明白了,不就是java/c#宏替换版本么?除了不知道怎么想出来的多返回值(这不吃饱了撑的么),需要在编译器中处理稍微麻烦点儿,剩下好像也就只有 A<x<B 和 x<=>y 之类改改预编译器就能搞定的语法,跟java/c#不太一样而已
    不过据说类库做的倒是很强大,拖拖放放一个程序就出来了,连最简单的工作都包装好了。怀疑这些不懂英语的“汉编程序员”遇到类库中没有的东西的时候,除了跪求控件或者到处问怎么翻成“易语言”外,还有没有别的办法解决问题了。
      

  3.   

    你是想请人把pascal语言,加一些中文注释吧。自已慢慢做吧???