Sziasztok ! Egy könnyű feladat Nektek megoldhatatlan probléma nekem, kérlek segítetek! Egy számgenerátor 1-3000-ig egymás alá beírja a számokat egy fájlba. Minden számnál megnyitja a proba.txt fájlt és hozzáír, ezért nagyon nagyon lassú. Kérlek javítsátok már ki, hogy gyorsabb legyen. kb 1000000-ig kellene működnie. Köszönöm szépen.
Itt a forrás:
procedure TForm1.Button1Click(Sender: TObject); var f: TextFile; a : word; begin a:=1;
While a<3000 do begin
AssignFile(f,'proba.txt'); {$I-} Reset(f); if IOResult<>0 then Rewrite(f) else Append(f); {$I+} Writeln(f,(a)); CloseFile(f); a:=a+1; end;
Most egy kis játékot próbálok összeügyködni Delphivel, de már azzal elakadtam, hogy kirajzoljak animálva egy figurát. Az alképeit váltogatná, de kirajzolás helyett mindenféle Acces violations-ös hibaüzenetet kapok. Mi nem jó a képeken látható kódomban?
El kellene dönteni, hogy milyen típusokkal akarsz dolgozni. Ahogy az előbb csináltad, string-ben stringet a pos függvénnyel kereshetsz, ami integert ad vissza:
function Pos(Str, Source : string): integer; Szerintem a te esetedben ez bőven elég.
A pos függvényt csak végszükség esetén használnám; PAnsiChar-rá meg nem tudom tenni hibaüzenet nélkül, mert az eredeti szöveg nem AnsiString, hanem csak string típusú.
Azt akarnám megoldani, hogy egy string típusú szövegből bizonyos írásjelek előfordulása között olvassak ki mondatrészt (most: < és > között).
Pedig a hibauzenet egyertelmu: az strscan PAnsiChar tipust var te pedig stringet adtal meg (sor, sor2: string). Vagy alakitsd at PAnsiCharra a sor-t vagy hasznald a pos fuggvenyt - 5 sorral lejjebb ott van a kododban kikommentezve!
Köszönöm szépen; valószínűleg az volt, amit említettél (hej, de régen Turbo Pascaloztam már, hogy erre emlékezzek :-) ). De most meg ez nem tetszik neki:
for j:=strscan(sor,'<') to strscan(sor,'>') do
Az strscan-nél írja ki, hogy "Incompatible types: 'String' and 'PAnsiChar'. Ennél mit rontottam el? Nem jól kérem be az írásjel első előfordulását? Vagy a függvénynevet rosszul adtam meg?
Sziasztok! Valaki éles szemű hozzáértő meglátná a hibát a melléklet képen lévőkódomban és leírná nekem, hogy miért írja ki a Delphi7 fordítója a jelzett sorra, hogy: Constant expression expected? Adott karaktertől adott karakterig akarom kimásolni egy szöveg: Nem;Sikerült! Nem<Sikerült másodjára is!> tartalmát és kiíratni azt. Nem jól fűzöm össze a szöveget, vagy rossz adattípusként adom meg, vagy mi lehet a baj?
TBitmap-et nem így kell másolni. Te csak a referenciát tárolod az osztályodban, amit a Free-vel szépen fel is szabadítasz, ezért hal be. Használd a TBitmap.Assign-t: kepe.Assign(sajatkepe);
Valaki elmondaná, hogy mi a hiba az alábbi programkódomban? Mindössze azt csinálná, hogy véletlenszerű helyekre kirakná a képeket és a kiírást ('TV:'), de ehelyett lefagy nekem meg memóriahozzáférési hibákat ír ki (kép nélkül, csak a kiírással jó):
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end;
type Televizio = class xhely, yhely: integer; kepe: TBitmap; constructor Letrehoz(idex,idey: integer; sajatkepe: TBitmap); end;
var Form1: TForm1; tvdarab: integer; tvtomb: array of Televizio;
implementation
constructor Televizio.Letrehoz(idex,idey: integer; sajatkepe: TBitmap); begin xhely:=idex; yhely:=idey; kepe:=sajatkepe; end;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); var tvkepe: TBitmap; var i: integer; begin randomize; tvkepe:=TBitmap.Create; tvkepe.LoadFromFile('d:Orion_Videotonviditv.bmp'); tvdarab:=round(random(10))+1; SetLength(tvtomb, tvdarab); for i:=0 to tvdarab do begin tvtomb[i]:=Televizio.Letrehoz(round(random(1000))+1,round(random(1000))+1,tvkepe); end; tvkepe.Free; end;
procedure TForm1.FormPaint(Sender: TObject); var i: integer; begin for i:=0 to tvdarab do begin Canvas.Draw(tvtomb[i].xhely,tvtomb[i].yhely,tvtomb[i].kepe); Canvas.TextOut(tvtomb[i].xhely-5,tvtomb[i].yhely-5,'TV:'); end; end;
Excel táblába feltöltök egy BMP-t. Semmi gond nem is volt ezzel a legutóbbi win10 frissítésig. XP és Win7 alatt tökéletes de Win10 alatt a kép mérete kisebb lett.
Általában, de különösen a programozás gondolatával barátkozó emberek abban a tévedésben élnek, hogy a munkájuk, mármint a (jó esetben általuk) tervezett program sikere, az alkalmazott programozási nyelv függvénye. Persze ez nem írható a rovásukra... immár tényleg ez a helyzet.:-)
Ezért is, lassan szakmunká(s)nak számít a (programozott) programozó.:-)
Lényegében: a programozói munka automatizálására tett kísérletekről szólnak a fejlesztések – a legújabb fejlesztői rendszerek, az azokhoz eszkábált nyelvek.
A Föld nevezetű (profit)versenypályán ugyanis nem mellékes a végtermék rendszerbe kerülésének ideje és költsége. Ennyit a kreativitásról.
Ugyanakkor nem hagyhatóak figyelmen kívül az egyre-másra megjelenő technológiai újítások. És úgy lehet, kellenek a kezelésüket segítően automatizált (kész) eljárás-és függvénytárak – mert minek vacakolna (követne el sorra elemi hibákat) ezek felprogramozásával a (programozó) szaki; ok, van értelme.
De könyörgök!:-)
Nem azért ülünk le kódolni, hogy 23 (tulajdonság beállítására irányuló) kattintással létrehozzuk a tízezredik időjárás előrejelző applikációt (opcionálisan választható színű és opacitású háttérrel) – amely programozói munka során az utolsó simítás, a jelentést (adatokat) szolgáltató szerver címének beállítása – na jó, azok (automatizált) feldolgozása és megjelenítése.
Nem megváltani kell a világot; elég volna azt csak megérteni... majd szólni egy programozónak, hogy modellezze.:-)
A virtuális valóság ujjbeggyel (vagy akár írisszel, hovatovább gondolattal) történő érintésének lehetőségét, annak időtartamát, valamint haladási irányát… továbbra is lényegtelennek tartom.:-)
Miért ne lehetne? A programozási nyelvnek bizonyos köze van csak ahhoz, hogy milyen funkciókat lehet majd érintőképernyővel megcsinálni. Az alap egér kattintás az érintőképernyő esetében egy simpla érintés. Tehát egyszerű érintőképernyős alkalmazás esetében csak a control-oknak, amiket a felhasználó használ a képernyőn, kell nagyobbnak lennie, és kész. Azért, hogy meg tudja kényelmesen érinteni. Már a 2000-es években volt érintőképernyős NEC monitorom, és Delphi 5-ben csináltam alkalmazást Windows-ra, ami csak annyiban különbözött egy szokásostól, hogy a gombok, legördülő menük, és egyéb elemek nagyobbak voltak, hogy kényelmesen újjal meg lehessen őket érinteni. Nem volt ezzel semmi probléma.
Amit a modernebb Delphi verziók támogatnak, az a több újjas érintés, és az okostelefonoknál megszokott érintések, és gesztusok.
Nyilván ez sokkal tágabb lehetőségeket ad, mint egy szimpla, vagy hoszú érintés, de ettől még egy bármilyen programnyelvben megírt alkalmazást lehet érintőképernyőre optimalizálni a control-ok méretének növelésével, és a képernyő elemek átrendezésével. Tehát nem programnyelv, és verzió függő ez a dolog.
Éttermekben manapság is használnak érintőképernyő monitorokat, és a számítógépeken egy régi programnyelv által írt alkalmazás fut, amit úgy készítettek el, hogy kényelmesen lehessen kezelni újjal.
Általában egyből látom, hogy egy programot hogy is kellene felépíteni, aztán jön a szintaktika, ami sok sok időbe telik. Megpróbálkoztam a C++ -al is, de a begin end - et annyira szemléletesnek tartom, hogy nem vette be a gyomrom {} ezeket. (talán minden { ilyen után teszek egy begin-t (Hi))
Nagyon köszönöm a választ. Nem vagyok programozó (csak pögyögök, delphi-ben), ez egy olyan ismerősöm kérése , akit bizonyos okokból nem utasíthatok vissza. Nem volt dolgom még ilyesmivel (a telefonom is egy siemens c45 (ha manapság mond ez bárkinek valamit is)). Asztali gépre kell és a monitor még csak ezután lesz beszerezve. De az első sor : "Tudsz" ad némi reményt.