Karakterek beszúrása probléma delphiben, van rá megoldás?
A segítségeteket szeretném kérni,mert elakadtam benne. Olyan progit kell írnom,ami két db számérték beírásakor, azaz 122 esetén egy "-" jelet ír a textboxba egy enter lenyomása után, 123 esetén pedig "+" jelet és ezt ismételgeti így a végtelenségbe, ebben a formában pl:
122-123+122-123+122-123+122-123+ stb...
vagy
123+122-123+122-123+122-123+122-123+ stb...
3 számjegyig sikerült megoldanom,de aztán sajnos rendesen elakadtam és bele is fáradtam sajnos.Azt feltételezem,hogy biztos nem lehet azért ördöngösség megoldani,de jelenleg fogalmam nincs miképpen lehetséges és mit hagytam figyelmen kívül.Az én megoldásom biztosan pocsék, ezért szeretném kérni hogy segítsetek benne,mert elfogyott a türelmem vele szórakozni.:))
Előre is köszi!
Az eddigi próbálkozásom:
unit karakterbeszur;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var s:string;
implementation
{$R *.dfm}
function RepeatString(const s: string; count: cardinal): string;
var i:integer;
begin
for i := 1 to count do
Result := Result + s;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var x:integer;
var y:integer;
begin
if key=#13 then begin
x:=length(edit1.text)+2;
y:=length(edit1.text)-2;
{x:=edit1.SelStart+2;
y:=edit1.selstart-2;}
if pos('123',edit1.text)>0 then begin
edit1.selText:=repeatstring('+',1);
s:=edit1.text;
delete(s,x+y,1);
edit1.Text:=s;
edit1.SelStart:=x-y div 4;
end;
if pos('122',edit1.text)>0 then begin
edit1.selText:=repeatstring('-',1);
s:=edit1.text;
delete(s,x-1,1);
edit1.Text:=s;
edit1.SelStart:=y+x * 4;
end;
end;
end;
Ezt a forrást még régen kellett ugyan készítenem,ami mondjuk nem túl nagy szám,mert ha már éppen a kiértékelésről beszéltem, ez két számmal tud csak 4 alapműveletet elvégezni és nem végtelen hosszan a beírómezőben...hm Hát nem egy parser ultimate az biztos.:)))
unit szamologep1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const a='+';
const b='-';
var jel,jel2:char;
var e,m:real;
var i,i2:integer;
implementation
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
decimalseparator:='+';
decimalseparator:='-';
i:=pos('+',Edit1.text);
if (pos('-',Edit1.text)>0) then i:=pos('-',Edit1.text);
if (pos('*',Edit1.text)>0) then i:=pos('*',Edit1.text);
if (pos('/',Edit1.text)>0) then i:=pos('/',Edit1.text);
e:=StrToFloat(copy(edit1.text,1,i-1));
m:=strtofloat(copy(Edit1.text,i+1,length(Edit1.text)));
jel:=edit1.text[i];
case jel of
'+': edit1.selText:='='+floattostr(e+m);
'-': edit1.selText:='='+floattostr(e-m);
'*': edit1.SelText:='='+floattostr(e*m);
'/': edit1.SelText:='='+floattostr(e/m);
end;
end;
end;
Hát had' ne elemezzem ki a 'műveletes' programodat :)
const a='+'; const b='-'; Minek ? nem használod és nem kell kétszer a const;
decimalseparator:='+';
decimalseparator:='-';
Na itt kezdtem keresni a rozsdás bökőt.
Sajnos logikátlan az egész, főleg, hogy próbálkozol még egy művelettel is a végén, mert ha a szorzás vagy osztás lenne azt kellene először elvégezni. Műveletek sorrendje - általános iskola - ha csak meg nem változott azóta mióta én jártam suliba :)
Lehet most ki fogsz nevetni az én szakmám vasutas, majd később rendőr, nincs semmilyen informatikával kapcsolatos végzettségem. A programozás mint újdonság kezdett el érdekelni a '80-as években, saját magam kárán tanultam és még tanulom most is ötvenen felül.
Én is Basic-kel kezdtem, utána Pascal, Delphi, de a Delphi-hez jól jött a C++ ismeret is. VB, VBA, VBS a munkám miatt kellett, Excel, Word makrók írása - jól jöttek a Basic alapok -. A weboldalam elkészítéséhez - nem akartam sablonost - bele kellett szagolni a HTML, CSS, PHP, JS nyelvekbe is.
Végül is egy nyelvet kell jól tudni, amin keresztül a programozás logikáját megérted, utána már nem nagy dolog az egész, a többi nyelv sem. Nekem ez a nyelv a Delphi.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!