19.11.2007, 12:11
общий
это ответ
Здравствуйте, Orz!
Вам потребуется шаблон вашего документа с определёнными метками в тексте где вы захотите вставлять данные нпример #ИНН# а также исходный фаил домустим txt который будет содержать значения подставляемые в шаюлон приблизительный код выглядит вот так
фаил формируется следующим образом
var
List :Tlist;
begin
List.Add(‘ИНН =‘ + ‘Получить значение ИНН из базы‘;
aList.SaveToFile(Path + aFileName + ‘.txt‘);
end;
этот пример будет работать только если у вас в одной строке одна замена иначе нужно переписывать подстановку которая в приложении.
Приложение:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; ListBox2: TListBox; ListBox3: TListBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}function GetValue(const str: string): string;var P : integer;begin P := pos(‘=‘, str); Result := copy(str, p + 1, length(str));end;function GetParam(const str, param: string): string;var P : integer;begin P := pos(‘=‘, str); if Copy(str,1,p-1)= param then Result := copy(str, p + 1, length(str)) else Result := ‘‘;end;function GetName(const str: string): string;var P : integer;begin P := pos(‘=‘, str); Result := copy(str, 1, p - 1);end;function RepitValue(Shb,dest : TListBox; const str: string): TListBox;var j : integer; t : string; st : array of string;Begin for J := 0 to Shb.Items.count -1 do begin setLength(st,j+1); t :=GetParam(Shb.Items[j], str); if t = ‘‘ then else Dest.Items.Add(T); end;End;procedure TForm1.Button1Click(Sender: TObject);Var s : string; i, j, g : integer; // текст шаблонаbegin ListBox1.Items.LoadFromFile(‘Путь до шаблона\имя шаблона с расширением‘); ListBox2.Items.LoadFromFile(‘Путь до данных из БД\имя файла с расширением‘); for I := 0 to ListBox1.Items.Count - 1 do begin S := ListBox1.Items[I]; if S <> ‘‘ then begin S := ListBox1.Items[I]; For J := 0 to ListBox2.Items.Count - 1 do begin g := pos (‘#‘, S); if g<>0 then begin S := StringReplace(S, GetName(ListBox2.Items[J]), GetValue(ListBox2.Items[J]), [rfReplaceAll, rfIgnoreCase]); end; ListBox3.Items.Add(S); end; end; end;end.