小编S.F*_*TEH的帖子

创建一个未知的循环数

这是我生成集合的所有可能组合的简单代码

1,2,3:

  • 显示:123 132 213 231 312 321

我想创建可变数量的for循环让用户确定给定字符串的长度...

有没有人有想法......

提前致谢.

type
  TNumber = '0'..'9';

procedure TForm1.Button1Click(Sender: TObject);
var
  Numbers: array[0..3] of TNumber;
  a, b, c, d: Integer;
  s: string;
begin
  Numbers[0] := '1';
  Numbers[1] := '8';
  Numbers[2] := '7';
  Numbers[3] := '2';
  for a := low(Numbers) to High(Numbers) do
    for b := low(Numbers) to High(Numbers) do
      for c := low(Numbers) to High(Numbers) do
        for d := low(Numbers) to High(Numbers) do
        begin
          s := Numbers[a] + Numbers[b] + Numbers[c]  + …
Run Code Online (Sandbox Code Playgroud)

delphi combinations loops permutation delphi-7

5
推荐指数
1
解决办法
652
查看次数

从inifile加载png图像的问题

我使用以下代码将PNG图像存储到Ini文件中:

procedure TfrmParametres.SaveIni;
var
  IniFile: TIniFile;
  MS: TMemoryStream;
  PNG: TPngImage;
begin
  IniFile := TIniFile.Create(IniFileName);
  try
  PNG := TPngImage.Create;
  try
    PNG.LoadFromFile(edtLogo.Text);//edtlogo contain image file path
    MS  := TMemoryStream.Create;
    try
      PNG.SaveToStream(MS);
      MS.Seek(0, 0);
      IniFile.WriteBinaryStream('REPORT_HEADER', 'LOGO', MS);
    finally
      MS.Free;
    end;
  finally
    PNG.Free;
  end;
finally
  FreeAndNil(IniFile);
end;
end;
Run Code Online (Sandbox Code Playgroud)

并以另一种形式显示图片OnShow事件我使用相同的方法:

  1. 在TMemoryStream对象中加载DATA
  2. 将MemoryStream中的DATA加载到TPngImage对象中
  3. 在TImage组件中显示图片

    procedure TfrmLoadPicture.FormShow(Sender: TObject);
    var
      IniFile: TIniFile;
      MS: TMemoryStream;
      PNG: TPngImage;
    begin
      IniFile:= TIniFile.Create(frmParametres.IniFileName);
      try
        MS:= TMemoryStream.Create;
        try
          IniFile.ReadBinaryStream('REPORT_HEADER', 'LOGO', MS);
          PNG := TPngImage.Create;
          try
            MS.Seek(0, 0);
            PNG.LoadFromStream(MS);
            Image.Picture.Assign(PNG);
          finally
            PNG.Free;
          end;
        finally …
    Run Code Online (Sandbox Code Playgroud)

delphi ini png

1
推荐指数
1
解决办法
686
查看次数

迭代TObjectList

我有ObjectList容器,我想添加一个内部迭代器(访问者模式)实际上我正在尝试确定我的列表中的重复项.

样本:http://pastebin.com/pjeWq2uN

这段代码提供了我正在努力实现的目标.

TFindDuplicatesMethod = procedure(s1, s2: string) of object;

TPersonList = class(TObjectList)
public
  procedure Iterate(pMethode: TFindDuplicatesMethod)
end;

procedure TPersonList.Iterate(pMethode: TFindDuplicatesMethod)
var
  i: Integer;
begin
  for i := 0 to Count - 1 do
  pMethode(TMyClass(Items[i]).S1, {But i don't have the second parameter because
                               it comes from outside of PersonList Ex: OpenDialog.Files[i]})
end;

function FindDuplicate(S1, S2: string): Boolean;
begin
  Result := False;
  if S1 = S2 then
  Result := True;
end;

begin
  Files.Iterate(FindDuplicates(S1, S2));
end;
Run Code Online (Sandbox Code Playgroud)

我想知道OOP如何解决这个问题.

提前致谢...

delphi loops tobjectlist visitor-pattern delphi-2010

0
推荐指数
1
解决办法
4723
查看次数