Kezdőoldal » Számítástechnika » Programozás » Karakterek beszúrása probléma...

Karakterek beszúrása probléma delphiben, van rá megoldás?

Figyelt kérdé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;



2015. szept. 30. 15:32
 31/95 A kérdező kommentje:

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;

2015. szept. 30. 21:32
 32/95 A kérdező kommentje:
Még annyit mondjuk tud,ahogy biztosan látod hogy egy utolsó harmadik értéket is értelmez, pl abban formában, hogyha valaki beírja, hogy 3+22+4, akkor összeadja a 3+22=25+4 de a 25+4 végeredményét pl már nem tudja megjeleníteni.
2015. szept. 30. 21:40
 33/95 A kérdező kommentje:
Köszönöm! Nagyszerűen működik sweeperes is.:)
2015. szept. 30. 21:42
 34/95 SimkoL ***** válasza:

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 :)

2015. szept. 30. 21:59
Hasznos számodra ez a válasz?
 35/95 A kérdező kommentje:
Az a baj,hogy matekból elég gyenge voltam ez most rendesen visszaüt és a programozási tudásom is szedett-vedett és roppant hiányos sajnos.Eleinte basicel kezdtem foglalkozni,aztán átmentem a suli miatt foxpro-ra aztán megszerettette velem az egyik barátom a pascal-t azzal a címszóval,hogy quickbasicben nem lehet lefordítani a programokat és turbo basicben sem lehet valami nagy durranásokat készíteni.Aztán a 90-es években pascaloztam, aztán jött egy másik haver aki rábeszélt a delphire,ami nagyon megtetszett aztán ezen ott ragadtam rendesen.:))Aztán lettek vele kisebb munkáim és feladataim,mert szoftverüzemeltetőit végeztem egykor és azóta kisebb feladatokat oldok meg vele,de csak olyat amit el is tudok készíteni a cégnek.Legtöbbször sajnos minden a rendelkezésemre áll és nem sokat kell törnöm az agyam a feladat megoldásain,csak "csinosítgatnom" kell inkább a dolgokat. Az a baj, hogy így teljesen felületesen szereztem meg a tudásomat és néha még a legegyszerűbb dolgokon is napokat küszködöm, vagy éppen meg sem tudom oldani egyedül a feladatokat.Mindezek mellett a kíváncsiság is hajt, mert tudom hogy delphivel mindent el lehet készíteni és ezért néha a munkából adódóan kíváncsiság hajt,hogy pl "ezt" meg "azt" hogy lehetne még megcsinálni és ebből jönnek aztán a "bonyodalmak" mikor rájövök,hogy jó formán a tudásom ott majdnem a nullával lesz egyenlő.:(
2015. szept. 30. 22:07
 36/95 A kérdező kommentje:
Bekavart nekem rendesen ez a sokféle programozási nyelv amivel kezdtem és eddig kellett foglalkoznom.Továbbá az,hogy ímmel-ámmal tudtam bizonyos dolgokban elmélyülni Delphiben.Képtelen vagyok arra,hogy egy vastag delphi könyvet végigolvassak és átrágjam magam a benne rejlő részleteken és feladatokat vigyek be a gépre, vagy oldjak meg példákat belőle.Nagyon szeretek vele foglalkozni mégis, elég kitartó is vagyok, igyekszem annak lenni,de a kódolásom az biztosan hagy maga után némi kívánni valót sajnos azzal tisztában vagyok.
2015. szept. 30. 22:19
 37/95 A kérdező kommentje:
Teljesen előröl kellene kezdeni a pascal-t is hozzá az tisztán látszik.Azzal is csak innen-onnan szereztem meg hozzá a tudást.A suliban nem is kellett tanulnom pl a Logo nyelvet, ami sokat segíthetett volna a fejlődésben.De ezek az idők már rég elmúltak azóta.
2015. szept. 30. 22:24
 38/95 SimkoL ***** válasza:

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.

2015. szept. 30. 22:35
Hasznos számodra ez a válasz?
 39/95 A kérdező kommentje:
A legnagyobb probléma az,hogy mivel ezekkel a manapság "osdi", pedig koránt sem az - nyelvekkel kezdtem el tanulgatni programozni,ezért ott ragadtam valahol a DOS-os környezetben agyilag is.Ott pedig nem volt nagyon más,mint vonalkarakteres ablakok és parancssorok tömkelegében való vájkálás,amiben kérdez-felelek "játékokkal" kellett ugye szórakozni a géppel egy parancssorban és nem voltak ilyen vizuális és interaktív megoldások,mint amit a Delphi kínál és tartalmaz magában. Ezért sok mindent mai napig is csak egy ablakkal vagy parancssorban, ami lehet memo, vagy editbox szeretnék megoldani és nem kérek be nagyon adatokat inputboxokon és querykkel, ha nem muszáj, pedig a céges dolgoknál muszáj persze és jó is ez így mindaddig,amíg a hobbi részére nem térek a dolgoknak a kíváncsi természetem miatt, hogy hogy lehetne mindezt egy, max 2 textbox-ra lerövidíteni, sűríteni. Minél egyszerűbbre tenni arra, amit már megszoktam. Aztán hoppá-hoppá ott jövök rá,hogy ami látszólag egyszerűnek tűnik,az bizony olyan fránya bonyolult és szövevényes dologgá is alakulhat, hogy rendesen elhavazom benne napokig-hetekig.Jobb lenne a Delphi által felkínált, már előre leprogramozott interaktív, látványosabb komponensekkel megoldani a gyakoló/hobbi hülyeségeimet is,ami jól jöhet élesben és jóval egyszerűbb is lenne a megoldás az input-output műveleteknél, de mégis próbálok mindent leszűkíteni és leegyszerűsíteni,már amit csak lehet egy-egy beírómezőre, vagy beviteli mezőre. Szóval problematikus az egész történet :(
2015. szept. 30. 22:52
 40/95 A kérdező kommentje:
Én hiába tanultam egykor hobbiból aztán később suliba programozni Foxproban és pascalban,ilyenkor mégis elveszik a tapasztalatom és a tudásom,mert azt amit ott kellett megtanulni és elsajátítani a 90-es évek vége felé az még egy alapszintet is alig ér el.Ráadásul az általad leírt nyelvekből a C-t egyáltalán nem ismerem, VB-ben sem programoztam soha és a webprogramozás sem kötött le idáig nagyon. Egyedül max egy kis html és javascript, aztán ennyi sajnos.Pedig ez a tudás a mai világban már elengedhetetlen és tudom,hogy az internetes programoké a jövő,de amit nekem kell készítenem,ahhoz ezekre az általad említett programnyelvekre semmi szükségem nincsen.Még persze lehet,de nem hiszem.
2015. szept. 30. 23:10

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!