Wczytywanie plików i wizualizacja w komponencie Memo

0

Cześć. Proszę o pomoc. Wczytuję plik tekstowy z kolumną liczb "n" typu Integer do komponentu Memo1 poniższą procedurą.
.....
begin
DecimalSeparator := '.';
if OpenDialog1.Execute then
begin
AssignFile(plikTXT, OpenDialog1.Filename);
Reset(plikTXT);
while not Eof(plikTXT) do
begin
Read(plikTXT,n);
Memo1.Lines.Add(inttostr(n));
Readln(PlikTxt);
end;
CloseFile(plikTXT);
end;
Następnie chcę wyświetlić w Memo2 pewien ciąc znaków wykorzystujący zmienną n wczytywaną z pliku. Wykorzystuję poniższą procedurę.
....
for i:=0 to Memo1.Lines.Count-1 Do
begin

Memo2.Lines.Add('key place text');
Memo2.Lines.Add('key '+ inttostr(n) +'');
end;
Teraz wiem, że powyższa procedura jest niekompletna, ponieważ jak program
ją wykona to wszystkie n są identyczne (n ma ostatnią wartość z pliku tekstowego,a powinna być wzięta każka wartość n, od początku kolumny).
Zatem nie wiem jak zrobić aby w tej drugiej procedurze była pobierana
od początku każda wartość n ale teraz z komponentu Memo1.
Byłbym bardzo zobowiązany jak byś mi pomógł.
Pozdrawiam
Sławek

0

nie wiem czy dobrze to rozumiem (chyba nie) ale wydaje mi sie ze moja odpowiedz bedzie zbyt oczywista:

ta petle
&gt for i:=0 to Memo1.Lines.Count-1 Do
&gt begin

&gt Memo2.Lines.Add('key place text');
&gt Memo2.Lines.Add('key ` '+ inttostr(n) + ``);
&gt end;

zmien na :

for i:=0 to Memo1.Lines.Count-1 Do
begin

Memo2.Lines.Add('key place text);
Memo2.Lines.Add('key '+ Memo1.Lines.Strings[i] +'');
end;

jesli o to chodzilo to napisz czy dobrze zrozumialem ;)
--Source of life - Programming,
Skateboarding,
Metal.

0

Cześć. Dzięki Ci za pomoc. Niestety z mojej winy opisałem dokładnie. A chodzi tu, że wczytuję do Memo1 plik tekstowy z trzema kolumnami zmiennych (n:integer,x:real,y:real). Następnie chcę w Memo2 je zwizualizować delikatnie modyfikując, ale wykorzystując dane po kolei z każdego wiersza. Twoja procedura wczyta mi cały wiersz a ja potrzebuję aby to wyglądało tak:

&gt for i:=0 to Memo1.Lines.Count-1 Do
&gt begin
&gt Memo2.Lines.Add('key place text');
&gt Memo2.Lines.Add('key '+ inttostr(n) + ``); &gt Memo2.Lines.Add('keyplace text); &gt Memo2.Lines.Add('key '+ inttostr(x) + ``);
&gt Memo2.Lines.Add('key place text);
&gt Memo2.Lines.Add('key '+ inttostr(y) +'');
&gt end;
Więc tu się zaczyna problem.Proszę cię bardzo o pomoc.
Sławek

0

Wydaje mi sie ze dobrze pomyslalem, ale jedynym warunkiem jest to aby miedzy kolejnymy wyrazeniami byla spacja, na koncu jej jednak nie moze byc (wystarczy troszke zmodyfikowac kod i bedzie ja usuwal)
oto kod:

procedure TForm1.Button1Click(Sender: TObject);
var
linia: String;
N,X,Y : Integer;
I,A,B,C : Integer;
begin
A := 0;
B := 0;
C := 0;
for I := 0 to Memo1.Lines.Count -1 do
begin
Linia := Memo1.Lines.Strings[I];

if pos(' ',Linia)&gt0 then
begin
A := pos(' ',Linia);
N := StrToInt(copy(Linia , 1 , A-1 ));
delete(Linia,A-1,1);

B := pos(' ',Linia);
X := StrToInt(copy(Linia , A , B ));
delete(Linia,B,1);

C := pos(' ',Linia);
Y := StrToInt(copy(Linia , A+B , C ));
delete(Linia,C,1);

end;

   begin
     Memo2.Lines.Add('key `place text`');
     Memo2.Lines.Add('key ` '+ inttostr(N) + ``);
     Memo2.Lines.Add('key `place text`);
     Memo2.Lines.Add('key ` '+ inttostr(X) + ``);
     Memo2.Lines.Add('key `place text`);
     Memo2.Lines.Add('key ` '+ inttostr(Y) + `'');
   end;

end;

end;

oczywiscie powiedz jesli o to chodzilo ;)--Source of life - Programming,
Skateboarding,
Metal.

0

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]&gt='0')and(s[i]&lt='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

0

Skoro to sprawia aż tyle problemów, to może odczytywać te dane nie do Memo tylko np do ListView lub innego obiektu z kolumnami (chociaż nie wiem, dlaczeg program dev_il'a nie działa hmm... )--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

wlasnie zobaczylem poruszenie w tym temacie wiec cos powiem:
dlaczego moj kod nie dziala, sprawdzalem u mnie jak go pisalem i na 100% dziala :)--Source of life - Programming,
Skateboarding,
Metal.

0

Ale x i y są wczytywane z pliku tekstowego jako real. Zmienne te są umieszczone po implementation.
Tu jest pies pogrzebany
Sławek.

1 użytkowników online, w tym zalogowanych: 0, gości: 1