zoukankan      html  css  js  c++  java
  • 一个字符串到数组的例子 回复"成红"的问题, 对其他朋友参考价值不大

    问题来源: http://www.cnblogs.com/del/archive/2008/11/04/1209070.html#1360634

    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    const
      str = '30,80:30:BD6B09:10:1850:苏州:88&50,140:120:976D00:8:150:苏州:88&' +
            '130,80:150:C50023:5:850:苏州:88&100,140:280:CAE5E8:15:450:苏州:88&' +
            '180,190:190:780062:7:3850:苏州:88&130,180:30:BD6B09:10:1850:无锡:88&' +
            '150,40:120:976D00:8:150:无锡:88&90,180:150:C50023:5:850:无锡:88&' +
            '10,80:280:CAE5E8:15:450:无锡:88&150,120:190:780062:7:3850:无锡:88';
    
    type
      TMyRec = record
        Longitude : Single;     {经度}
        Latitude  : Single;     {纬度}
        Angle     : Single;     {角度}
        Color     : TColor;     {颜色}
        Size      : Cardinal;   {大小}
        Value     : Cardinal;   {值}
        Name      : string;     {名称}
        Number    : Integer;    {编号}
      end;
    
      TMyArr = array of TMyRec;
    
    {转换过程}
    procedure MyStr2Arr(const str: string; var Arr: TMyArr);
    var
      List1,List2,List3: TStringList;
      i: Integer;
    begin
      SetLength(Arr, 0);
    
      List1 := TStringList.Create;
      List2 := TStringList.Create;
      List3 := TStringList.Create;
    
      List1.Delimiter := '&';
      List1.DelimitedText := str;
    
      List2.Delimiter := ':';
      for i := 0 to List1.Count - 1 do
      begin
        List2.DelimitedText := List1[i];
        if List2.Count <> 7 then Exit; {原始数据不合法}
    
        List3.CommaText := List2[0];
    
        SetLength(Arr, Length(Arr)+1);
        with Arr[High(Arr)] do
        begin
          Longitude := StrToFloatDef(List3[0], 0);
          Latitude  := StrToFloatDef(List3[1], 0);
          Angle     := StrToFloatDef(List2[1], 0);
          Color     := TColor(StrToIntDef(List2[2], 0));
          Size      := StrToIntDef(List2[3], 0);
          Value     := StrToIntDef(List2[4], 0);
          Name      := List2[5];
          Number    := StrToIntDef(List2[6], 0);
        end;
      end;
    
      List1.Free;
      List2.Free;
      List3.Free;
    end;
    
    {测试}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyDataArr: TMyArr;
      i: Integer;
    begin
      MyStr2Arr(str, MyDataArr);
    
      for i := 0 to Length(MyDataArr) - 1 do
        with MyDataArr[i] do
          Memo1.Lines.Add(Format('%f,%f: %f,%d,%d,%d,%s,%d',
                         [Longitude, Latitude, Angle, Color, Size, Value, Name, Number]));
    
      Memo1.Lines.Add('');
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Memo1.Clear;
      Memo1.Align := alTop;
      Memo1.ScrollBars := ssBoth;
    end;
    
    end.
    
    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 227
      ClientWidth = 304
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object Button1: TButton
        Left = 120
        Top = 191
        Width = 75
        Height = 25
        Caption = 'Button1'
        TabOrder = 0
        OnClick = Button1Click
      end
      object Memo1: TMemo
        Left = 24
        Top = 0
        Width = 185
        Height = 185
        Lines.Strings = (
          'Memo1')
        TabOrder = 1
      end
    end
    
  • 相关阅读:
    今天面试一些程序员(新,老)手的体会
    UVA 10635 Prince and Princess
    poj 2240 Arbitrage
    poj 2253 Frogger
    poj 2485 Highways
    UVA 11258 String Partition
    UVA 11151 Longest Palindrome
    poj 1125 Stockbroker Grapevine
    poj 1789 Truck History
    poj 3259 Wormholes
  • 原文地址:https://www.cnblogs.com/del/p/1326241.html
Copyright © 2011-2022 走看看