Niestety to nie działa. Nie myślałem, że to może sprawić tyle problemu. Zależy mi na tym. Pokażę Ci listing trochę podobnego programu, który kiedyś napisał mi kolega. Wczytuje on z pliku tekstowego dwie kolumny liczb (integer). Potem wierszami je dodaje i zgrywa wyniki. Napisał on funkcję Find_Numbers. Wydaje się prosta ale jej nie rozumiem. Pewna część kodu jest podobna do tego co potrzebuję ale niestety nie potrafię go zmodyfikować. Ponadto liczby, które on wykorzystuje są typu integer a u mnie x i y są real. Przejrzyj ten kod. Może on Ci nasunie jakiś pomysł.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const maxL=100;
type
TLiczby = record
L1,L2,W:integer;
end;
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
Liczby:array[0..MaxL] of TLiczby;
Ile:word;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
F1, F2: TextFile;
Ch: Char;
bufor:integer;
i:word;
s:string;
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.Clear;
AssignFile(F1, OpenDialog1.Filename);
Reset(F1);
while not Eof(F1) do
begin
ReadLn(F1, s);
Memo1.Lines.Add(s);
end;
CloseFile(F1);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
F1, F2: TextFile;
Ch: Char;
i:word;
s:string;
begin
if SaveDialog1.Execute then
begin
AssignFile(F2, SaveDialog1.Filename);
Rewrite(F2);
for i:=0 to Memo1.Lines.Count-1 Do
begin
s:=Memo1.Lines[i];
WriteLn(F2, s);
end;
CloseFile(F2);
end;
end;
function Find_Numbers(s:string):TLiczby;
var i,k:word;
l:array[0..10] of integer;
s1:string;
j:boolean;
begin
for i:=0 to 10 Do l[i]:=0;
s1:=; j:=false; k:=0; for i:=0 to Length(s) Do begin if (s[i]>='0')and(s[i]<='9') then begin j:=true; s1:=s1+s[i]; end; if (j)and( (s[i]=' ')or(i=Length(s)) ) then begin j:=false; l[k]:=StrToInt(s1); s1:=
;
Inc(k);
end;
end;
Result.L1:=l[0];
Result.L2:=l[1];
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:word;
w:TLiczby;
begin
for i:=0 to Memo1.Lines.Count-1 Do
begin
w:=Find_Numbers(Memo1.Lines[i]);
w.W:=w.L1+w.L2;
Memo1.Lines[i]:=IntToStr(w.L1)+' '+IntToStr(w.L2)+' '+IntToStr(w.W);
end;
end;
end.
Pozdrawiam
Sławek