Porównanie dwóch liczb z dwóch memo

0

Mam mały problem, pewnie dla niektórych to będzie błachostka wiec proszę o pomoc bez docinków :)

mam taki kod porównuje dwie liczby ale niestety zobaczyłem ze tylko 1 znak porównuje , jak zrobic zeby cała liczbe porównało a nie tylko 1 znak w memo. Z góry dzieki za pomoc
zaznaczam że do memo wgrałem dane z plików txt.

 
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Timer1: TTimer;
    Timer2: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button2: TButton;
    Label4: TLabel;
    procedure FormCreate(Sender: TObject);

    procedure Button2Click(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
   const
    p='C:\grasms\kwota.txt';
    sms='c:\grasms\sms\sms.txt';

var
  Form2: TForm2;
   f:textfile;
    wynik:string;
implementation

{$R *.dfm}




procedure TForm2.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
    deletefile('c:\grasms\serwer\plik.txt');
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
     if(Fileexists(p)=true) then
  begin

      memo1.lines.clear;
    memo1.lines.loadfromfile(p);
  end
  else memo1.lines[0]:='Czekam';


end;

**procedure TForm2.Timer2Timer(Sender: TObject);
var f:textfile;
begin
assignfile(f,'c:\grasms\serwer\plik.txt');

        if(Fileexists(sms)=true) then
  begin
    memo2.lines.clear;
    memo2.lines.loadfromfile(sms);

  **  if (memo2.lines[0]=memo1.lines[0])       then

           memo3.lines[0]:='Wygrana!!!!!!';
                     rewrite(f);
             wynik:=memo3.lines[0];
writeln(f,wynik);



   if (memo2.lines[0]<memo1.lines[0]) then

         memo3.lines[0]:='Za mało';
         rewrite(f);
        wynik:=memo3.lines[0];
writeln(f,wynik);

  if (memo2.lines[0]>memo1.lines[0])then

        memo3.lines[0]:='Za duzo';
        rewrite(f);
       wynik:=memo3.lines[0];
writeln(f,wynik);            
**                                                                porównanie

           CloseFile(f)
           end
           else memo2.lines[0]:='Czekam';


     end; 






end.

próbowałem wstawiac pierwsze linie do zmiennych nic nie pomogło.

przepraszam nie ten kod wrzuciłem

0
  1. o banaly pytaj w dziale Newbie.
  2. wklejaj kod w znacznikach delphi (masz przyciski podczas pisania postow)
  3. rob wciecia w kodzie uzywajac <tab> i spacji.
  4. pokaz mi w tym kodzie miejsce w ktorym cokolwiek porownujesz.
  5. napisales w temacie o dwoch memo. ja widze tylko jedno.
  6. daj jakies komentarze do kodu, albo chociaz nazwij po ludzku buttony bo nie wiadomo o co chodzi...
0

Wybacz, moze jestem slepy, ale ja tu porownywania W OGOLE nie widze...

0

Wyzej wrzuciłem poprawny kod, nie z tego okna wkleiłem za pomyłke przepaszam

0

nie porownujesz liczb tylko napisy a to roznica.
memo1.lines[0] to nie liczba a napis zawierajacy liczbe.

if StrToInt(memo1.lines[0])>StrToInt(memo1.lines[0]) then...

ale lepiej wrzuc do zmiennych to bedzie bardziej czytelne.
odatkowo powinienes zabezpieczyc program przed wpisaniem czegos, co liczba nie jest.

0

do tego własnie doszedłem jak zmienic by było poprawnie, probowalem podstawic te linie pod zmiennie wlacznie z daniem konwersji ale to samo dalej

0

jeśli w tych liniach są liczby, to nie porównuj stringów, tylko inty - czyli przed porównaniem każdą z linii musisz potraktowac za pomoca strtoint()

0

w danych są liczby tylko jak to zrobic by je przerobic ze stringa na int próbowałem poprzez podstawienie pod zmiennia
" d:=strtoint(memo2.lines[0]); "

gdzies robie czeski błąd.

Z góry za jakaś jeszcze pomoc

0

no to dobrze robisz. potem porownujesz "d" z czyms innym.
popraw wciecia w tym kodzie swoim bo masakra jest... :D

0

Dzięki wielkie działa :)

0

masz chyba jeszcze jeden blad.

  rewrite(f);
  wynik:=memo3.lines[0];
  writeln(f,wynik);

masz 3 identyczne "bloki" operacji po 3 linijki.
nie widze zeby gdzies byly zmiany wprowadzane wiec na dobra sprawe mozesz to dac pod koniec procedury.

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