吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 401|回复: 5
收起左侧

[求助] 是不是不是一种类型的不能赋值复制?

[复制链接]
冥界3大法王 发表于 2024-2-22 21:14
procedure TForm7.Button1Click(Sender: TObject);
begin
  Memo2.Lines.Assign(Memo1.Lines);    OK!
  ListBox1.Items.Assign(Memo1.Lines);   OK!

//  StringGrid1.Assign(Memo1.Lines);   报错!
//  Memo1.Lines.Assign(StringGrid1);   报错!
end;

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lies2014 发表于 2024-2-22 23:09
StringGrid1.Assign(Memo1.Lines);
你这样写肯定是不行的
StringGrid1 里有那么多属性,Memo1.Lines 应该复制给谁呢?
TPersistent 类派生的对象才可以 Assign
你写成 StringGrid1.Cols[0].Assign(Memo1.Lines); 就不会报错了
同样 Memo1.Lines.Assign(StringGrid1.Rows[1]);  就没问题

免费评分

参与人数 1吾爱币 +2 收起 理由
冥界3大法王 + 2 谢谢@Thanks!

查看全部评分

 楼主| 冥界3大法王 发表于 2024-2-23 08:00
lies2014 发表于 2024-2-22 23:09
StringGrid1.Assign(Memo1.Lines);
你这样写肯定是不行的
StringGrid1 里有那么多属性,Memo1.Lines 应该 ...

还有一问题 StringGrid1怎么保存数据成.txt?
homejun 发表于 2024-2-23 09:02
冥界3大法王 发表于 2024-2-23 08:00
还有一问题 StringGrid1怎么保存数据成.txt?

自己写代码读取stringgrid1的内容,保存到txt文件
 楼主| 冥界3大法王 发表于 2024-2-23 11:28
homejun 发表于 2024-2-23 09:02
自己写代码读取stringgrid1的内容,保存到txt文件

@homejun 大神能不能表演下:
[Delphi] 纯文本查看 复制代码
procedure TForm7.给每一个单元格赋值Click(Sender: TObject);     //给每一个单元格赋值
var
  c, r: Integer;
begin
  for c := 0 to StringGrid1.ColCount - 1 do
    for r := 0 to StringGrid1.RowCount - 1 do
      StringGrid1.Cells[c, r] := Format('%d,%d', [c, r]);
end;

能不能用这个修改下?

使之能简单的遍历读取和写入TXT于StringGrid1?
 楼主| 冥界3大法王 发表于 2024-2-24 00:03
unit Unit7;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls, Vcl.Grids;

type
  TForm7 = class(TForm)
    按行读取方式一: TButton;
    Edit1: TEdit;
    按行分割字符串: TButton;
    按行读取方式二: TButton;
    StringGrid1: TStringGrid;
    表格添加数据: TButton;
    c: TButton;
    得到txt总行数: TButton;
    遍历StringGrid: TButton;
    写入空行: TButton;
    procedure 按行读取方式一Click(Sender: TObject);
    procedure 按行分割字符串Click(Sender: TObject);
    procedure 按行读取方式二Click(Sender: TObject);
    procedure 表格添加数据Click(Sender: TObject);
    procedure cClick(Sender: TObject);
    procedure 得到txt总行数Click(Sender: TObject);
    procedure 遍历StringGridClick(Sender: TObject);
    procedure 写入空行Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.按行读取方式一Click(Sender: TObject);
var
  txtlist: TStringList;
  m: integer;
begin
  txtlist := TStringList.Create;
  txtlist.LoadFromFile(Edit1.Text);
  for m := 0 to txtlist.Count - 1 do
  begin
    ShowMessage(txtlist.Strings[m]);
  end;
end;

procedure TForm7.表格添加数据Click(Sender: TObject);
var
  i, j: integer;
  arr: array[0..200, 0..5] of string;         //200行
begin
  StringGrid1.Cells[1, 0] := '路径';
  StringGrid1.Cells[2, 0] := '完成度';
  StringGrid1.Cells[3, 0] := '当前思绪';

  StringGrid1.Cells[1, 1] := '翠翠1';
  StringGrid1.Cells[1, 2] := '艳艳2';
  StringGrid1.Cells[1, 3] := '灵灵3';
  StringGrid1.Cells[1, 4] := '风风4';
  StringGrid1.Cells[1, 5] := '火火5';

  StringGrid1.Cells[2, 1] := 'aaa';
  StringGrid1.Cells[2, 2] := 'bbb';
  StringGrid1.Cells[2, 3] := 'ccc';
  StringGrid1.Cells[2, 4] := 'ddd';
  StringGrid1.Cells[2, 5] := 'eee';

  StringGrid1.Cells[3, 1] := '111';
  StringGrid1.Cells[3, 2] := '222';
  StringGrid1.Cells[3, 3] := '333';
  StringGrid1.Cells[3, 4] := '444';
  StringGrid1.Cells[3, 5] := '555';

  StringGrid1.ColWidths[0] := 100;    //把第一列隐藏即可
  StringGrid1.ColWidths[1] := 1100;
  StringGrid1.ColWidths[2] := 400;
  StringGrid1.ColWidths[3] := 400;
end;

procedure TForm7.遍历StringGridClick(Sender: TObject);
var
  i, j: Integer;
begin
  for i := 0 to StringGrid1.RowCount - 1 do
  begin
    for j := 0 to StringGrid1.ColCount - 1 do
    begin
      ShowMessage('Cell[' + IntToStr(i) + ',' + IntToStr(j) + ']: ' + StringGrid1.Cells[j, i]);   // 访问StringGrid1中每个单元格的内容

      if StringGrid1.Cells[j, i] = '' then
      begin
        ShowMessage('读取到的单元格为为空');   //那就写入空行
      end;

    end;
  end;
end;

procedure TForm7.cClick(Sender: TObject);
var
  ATextFile: TextFile;
  Line: string;
  LineNumber: Integer;
begin
  AssignFile(ATextFile, 'X:\要读取的文件.txt');
  Reset(ATextFile);
  try
    LineNumber := 1;
    for LineNumber := 1 to 3 do
    begin
      Readln(ATextFile, Line);
      ShowMessage(Line);
      Writeln('Line ', LineNumber, ': ', Line);
    end;
  finally
    CloseFile(ATextFile);
  end;
end;

procedure TForm7.按行分割字符串Click(Sender: TObject);
var
  StringList: TStringList;         //与分割有关
  要分割的字符串: string;          //与分割有关
  AI: integer;                     //与分割有关
begin
  StringList := TStringList.Create;
  try
    要分割的字符串 := 'Apple▲Banana▲Orange';
    StringList.Delimiter := '▲';                   //设置分隔符为▲
    StringList.DelimitedText := 要分割的字符串;    //使用DelimitedText属性分割字符串
    for AI := 0 to StringList.Count - 1 do          //遍历列表并打印每个分割后的字符串
    begin
      ShowMessage(StringList[AI] + '+' + AI.ToString);
    end;
  finally
    StringList.Free;
  end;
end;

procedure TForm7.按行读取方式二Click(Sender: TObject);
var
  txtFile: TextFile;
  s: string;
begin
  AssignFile(txtFile, 'D:\d.txt');
  Reset(txtFile);
  while not eof(txtFile) do
  begin
    readln(txtFile, s);
    ShowMessage(s);
  end;
end;

procedure TForm7.写入空行Click(Sender: TObject);
var
  TextFile: TStreamWriter;
begin
  // 创建或打开要写入的.txt文件
  TextFile := TStreamWriter.Create('example.txt', False);
  try
    // 写入空行
    TextFile.WriteLine();   //空行这么写?
  finally
    TextFile.Free;
  end;
end;

procedure TForm7.得到txt总行数Click(Sender: TObject);
var
  A_TextFile: TextFile;
  总行数: Integer;
  读取到的行内容: string;
begin
  AssignFile(A_TextFile, '要读取的文件.txt');
  Reset(A_TextFile);
  总行数 := 0;
  try
    while not Eof(A_TextFile) do
    begin
      Readln(A_TextFile, 读取到的行内容);
      Inc(总行数);
    end;
//    Writeln('Total number of lines in a.txt: ', LineCount);
    ShowMessage('总行数是:' + 总行数.ToString);
  finally
    CloseFile(A_TextFile);
  end;
end;

end.
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-4 06:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表