Keresés

Részletes keresés

XNC Creative Commons License 2023.12.24 0 0 9025

Persze ha csak szintaktikai a hiba, akkor nem biztos hogy megéri a váltás.

Előzmény: XNC (9024)
XNC Creative Commons License 2023.12.24 0 0 9024

A kérdezőnek magának kell eldöntenie, hogy mennyire mazochista.....   :)

Előzmény: XtraP (9023)
XtraP Creative Commons License 2023.12.24 0 0 9023

Érdekes lenne, ha ilyesmik miatt 20-30 sornyi próbálkozásonként új nyelvvel próbálkozna az ember ... főleg, hogy kezdetben soronként több hiba jön szembe.

Előzmény: XNC (9020)
XtraP Creative Commons License 2023.12.24 0 0 9022

((Persze arra sincs garancia, hogy a Delphi és a Freepascal ebben megegyezik - de nagyon sokban igen.))

Előzmény: XtraP (9021)
XtraP Creative Commons License 2023.12.24 0 0 9021

https://wiki.freepascal.org/Grids_Reference_Page#property_Columns

 

"Additionally, when using custom columns, the grids do not allow direct modification of grids.colcount; adding or removing columns should be done using the columns property. The explanation is that there is an inconsistency on gradually removing custom columns using ColCount, when ColCount reaches FixedCols, the grid has no more custom columns. If we now increase ColCount, the new column will not be a custom column but a normal column."

 

Úgy emlékszem (túl az idézett mondatokon), hogy oszlopokat egyesével lehet hozzáadni. Az oszlopdarabszám átírása ugyanis nem foglalja le az új oszlopok számára a memóriát. De nem vagyok ebben biztos; mindenesetre próbálkozz a fentebb javasolt columns metódussal.

Előzmény: Endre Szalay (9019)
XNC Creative Commons License 2023.12.23 0 0 9020

Ezt ott kéne megkérdezned, ahol tanulod.

Ha meg csak úgy magadtól, akkor irány 1 másik nyelv!  :)

Előzmény: Endre Szalay (9019)
Endre Szalay Creative Commons License 2023.12.23 0 0 9019

Sajnos az általad megadott URH nálam nem működik, kérlek mondd el szóban

mi a probléma. (kezdő programozó vagyok!)

 

unit Unit1;

 

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
strinURHm1: TForm1;

s1:string;
s2,penz:string;
szoveg,kod:string;
i,j:integer;
be:textfile;
sokpenz:integer;
Stringgrid1:Tstringgrid;

implementation
//uses unit2;
{$R *.dfm}
begin

s2:='C:/users/Kefi/Documents/Pascal/Rezsi20/trezor.txt';
assign (be,s2);
reset(be);
readln(be,sokpenz);
str(sokpenz,s1);
showmessage(s1);
showmessage(s1+' abcdef!');
stringgrid1.Colcount:=3; itt akad ki
Stringgrid1.Width:=350;

NevemTeve Creative Commons License 2023.12.22 0 0 9018
Előzmény: Endre Szalay (9017)
Endre Szalay Creative Commons License 2023.12.22 0 0 9017

És akkor mi van? Pontosan látom, hogy melyik utasításnál akad ki a programom, csak nem tudom, miért.

NevemTeve Creative Commons License 2023.12.22 0 1 9016

Debuggolni. Magadtól ez nem jutott eszedbe?

Előzmény: Endre Szalay (9015)
Endre Szalay Creative Commons License 2023.12.22 0 0 9015

Helló mindenki!

Segítsetek már: Delphi 7.0-m van Win 10-es mellett! Delphi programomban Stringgridet szeretnék használni,de amikor a stringgrid értékadásához ér a program, Access violation hibaüzenettel leáll.

Mit lehet csinálni?

Szalay Endre

Spe-nót Creative Commons License 2023.09.02 -1 0 9014

Spe-nót Creative Commons License 2023.08.30 -1 1 9013

Köszönöm, hasznos volt.

Belenéztem, átfutottam. Arra pont jó volt, hogy igazolást adjon az én általam megalkotott játék-szerkezetről.

 

Nagyon jó kis oldal egyébként az az archívum.

Találtam is benne mást, ami hasznos. 

 

https://colorcomputerarchive.com/repo/Documents/Books/Write%20Your%20Own%20Adventure%20Programs%20(1983)(Usborne).pdf

 

Előzmény: NevemTeve (9011)
XNC Creative Commons License 2023.08.30 0 2 9012

Jó nagy fába vágtad a fejszédet.....

Előzmény: Spe-nót (9010)
NevemTeve Creative Commons License 2023.08.30 0 1 9011
Előzmény: Spe-nót (9010)
Spe-nót Creative Commons License 2023.08.30 -1 0 9010

Egy szöveges, történetmesélős kalandjátékot szeretnék elkövetni.

 

Ehhez milyen adatszerkezeteket ajánlanátok?

Emellett, milyen programszerkezetet ajánlanátok?

 

Válaszaitokat köszönöm.

 

lxt Creative Commons License 2023.08.25 0 1 9009

Egy if is sok
Result:= reláció eredménye

(Egy efféle tömbnek térképnek akkor volna értelme, ha regisztrálni akarnánk a vízcsepp által megtett útvonalat; úgy mindig lenne egy, az aktuálisan érintett vízcsempét azonosító, összehasonlítható értékünk amiként a vízcsepp koordinátái is, valós időben adottak.)

A pontosság érdekében nem csak a vízcsempék, hanem az azokat határoló 'fugák' méretei (...) sem mellékesek - amely adatok tárolására (még ha azok változnának is a folyamat során) pont megfelel egy/több, mindenkor érvényes tartalmú mátrix.
Továbbá: definiálni kell, hogy az 1 pixelnél terjedelmesebb vízcsepp melyik képpontja adja annak érvényes pozícióját; mi történjen akkor, ha e pozíció két vagy több vízcsempe között húzódó 'fuga' területére esik feltéve, hogy a program nem zárja ki azt eleve, mondjuk a vízcsepp következő pozíciójának színkódját vizsgálva… ami ötletet adhat a szemmel nem érzékelhető, vízcsempénként eltérő színkódok alkalmazására; már ugye, a gyorsabb azonosítás érdekében ha már mátrixok.:-)

Előzmény: egy hazafi (9003)
kisspetya Creative Commons License 2023.08.24 0 0 9008

Persze. A byte meg word ugye nem is lehet negatív, meg könnyen túlcsordulhatnak.
Ezer éve nem Delphizek, már nem emlékszem a compiler pontosan hogy csinálja, de én inkább nem szórakoznék ilyenekkel.


Áruld már el, hogy az a két if minek?

Elegánsan ez a kód kb. ennyi lenne:

 

function utkvizzel(xh: integer; yh: integer): boolean;
begin
   if mostterkep[yh div vizmag, xh div vizszel]=1 then Result:=true
   else Result:=false;
end;

 

Ha különböző méreteket akarsz, akkor aztán teljesen más logika kell.
Az már haladó szint. :)

Előzmény: egy hazafi (9007)
egy hazafi Creative Commons License 2023.08.24 0 0 9007

Akkor a típusátalakítások (ha jól tudom, ezt nevezik cast-olásnak) is okozhatnak galibát a kapott értékben?

Egyébként most találtam egy hellyel-közzel jól működő megoldást a problémámra:

 

function utkvizzel(xh: integer; yh: integer): boolean;
var ktxh,ktyh: integer;
begin
if xh<vizszel then ktxh:=0 else
begin
ktxh:=xh div vizszel;
end;
if yh<vizmag then ktyh:=0 else
begin
ktyh:=yh div vizmag;
end;
if mostterkep[ktyh,ktxh]=1 then utkvizzel:=true else utkvizzel:=false;
end;

 

amelyben a vizszel és vizmag a vízcsempe szélessége és magassága. Persze ez bizonyára nem lesz jó azokban az esetekben, amikor különböző méretű csempék vannak a pályán, de most még ez megfelel nekem.

Előzmény: kisspetya (9006)
kisspetya Creative Commons License 2023.08.24 0 1 9006

Jól megbonyolítottál ebben mindent.
Nem kell bele semmi if.

 

Ha xh és yh tényleg 0,0-tól indul, akkor ennyi az egész:
ktxh:=xh div (palyakep.width div tkszel);
ktyh:=yh div (palyakep.height div tkmag);

 

Ha nem jó, akkor máshol van a hiba.

 

Pár tanács:

Az nem egészséges, hogy ennyire kevered a típusokat. Integert div-elsz byte-al, aztán ezt word-be rakod. Nagy meglepetések érhetnek.

Egészhez neked jó az Integer, valóshoz meg a Double.

 

A cellaszélességet és magasságot eleve az elején már változóban kellene tárolni és nem minden pixelmozgásnál újraszámolgatni.

Előzmény: egy hazafi (9005)
egy hazafi Creative Commons License 2023.08.24 0 0 9005

Igen, kiíratom, amit lehet.

Van ugyan egy oldalpanel, ami 128 képpont széles, de ezt sem hozzáadva, sem kivonva nem segít, ráadásul függőlegesen nincs semmi, tehát az az irányú rendellenes eltolódásra ez nem magyarázat.

Egyébként a forráskód letölthető innen: https://prog.hu/tarsalgo/215290/gond-koordinatak-atvaltasaval-kis-es-nagyterkep-kozott?no=5&op=download

Előzmény: kisspetya (9004)
kisspetya Creative Commons License 2023.08.24 0 0 9004

Debugolj mindent.

 

Ugyanazt a koordináta-rendszert használod mindenhol?
Pl. ha xh=0, yh=0 a képernyő bal felső sarka, a térképed bal felső sarka is abban a pozícióban van?
Ha nem, akkor egyiket transzformálnod kell a másikba. Az osztás ilyenkor kevés.

Előzmény: egy hazafi (9003)
egy hazafi Creative Commons License 2023.08.24 0 0 9003

Kedves szakértők!

 

Szeretném tőletek megtudni, hogy ha van egy ilyen alakú térképem:

var terkep: array [0..8,0..8] of byte=(
(0,0,0,1,0,0,0,0,0),
(0,2,0,1,0,0,3,0,3),
(0,0,1,1,1,0,0,0,0),
(0,3,1,0,1,0,3,0,0),
(0,0,1,0,1,0,0,3,0),
(0,0,1,1,1,0,3,0,0),
(0,3,0,0,0,3,0,3,0),
(0,0,0,1,0,0,0,0,0),
(0,0,0,1,0,0,0,0,0)
);

amelyen az 1-es szám a mellékelt képen látható akadályt (vízcsempe) mutatja, akkor a rendes, ennek alapján létrehozott nagy képen mozgó objektum aktuális koordinátái alapján hogyan tudható meg, hogy az éppen az 1-es csempén van-e vagy sem?

Most ezzel a kóddarabbal számítom az elhelyezkedést a terkep-en (a mostterkep-be betöltve), de ez nem jó, mert csak nagyjából adja a helyes koordinátát, és részben belemegy a vízcsempékbe, mintha azok jobbra és lefelé el lennének tolva egy kicsit:

function utkvizzel(xh: integer; yh: integer): boolean;
var ktxh,ktyh: integer;
begin
if xh<(palyakep.width / tkszel) then ktxh:=0 else
begin
ktxh:=round(xh / (palyakep.width / tkszel));
//if ktxh>=1 then ktxh:=ktxh-1;
end;
if yh<(palyakep.height / tkmag) then ktyh:=0 else
begin
ktyh:=round(yh / (palyakep.height / tkmag));
//if ktyh>=1 then ktyh:=ktyh-1;
end;
if mostterkep[ktyh,ktxh]=1 then utkvizzel:=true else utkvizzel:=false;
end;

Próbálkoztam a round-on kívül ceil-lel, floor-ral, trunc-cal, de csak rontottam a helyzeten. A round a legpontosabb ezek közül, de még ez sem eléggé.

Tehát ahol a képen látható a sárga kör, az az 1 és 2 YX koordináta kellene legyen a terkep-en (0-tól indul ugyebár). De ha azt round-dal kerekítem, akkor 2-2 lesz az Y koord és X koord, amint a legfelső kiírás is mutatja.

Szóval nem tudom belőni a megfelelő helyet neki és már semmi ötletem sincs hozzá.

Fidel Nasztro Creative Commons License 2023.06.26 0 0 9002

"Előre is köszönöm, ha van ötletetek!"

 

Van!

 

Inkább foglalkozz valami mással.
Int 10h meg hasolók valós időben, DOS alatt érhetők el, mivel a BIOS részei ezek a rutinok.
BIOS meg védett módban egy nem létező fogalom. A win/linux az ugyanis védett módú opre.

A te bajodra egy pointer-es, scanline-os megvalósítás lenne az orvosság.

 

 

 

Előzmény: Leonetto (8992)
Leonetto Creative Commons License 2023.05.28 0 1 9001

Látom, halott ez a fórum. De ha valaki mégis idetévedne hasonló problémával, bemásolom az általam alkalmazott, hibátlanul működő megoldás érintett kódrészletét. Elegánsabb lenne fájlművelet nélkül, de arra a mesterséges intelligencia sem tudott működőképes megoldást kínálni.

bitmap.SaveToFile('c:!image.bmp');

Output := RunCommand('cmd.exe', '/c ' + 'tesseract.exe c:!image.bmp c:!output -l eng');
OutputFile := 'c:!output.txt';
OutputText := TStringList.Create;

OutputText.LoadFromFile(OutputFile);
label1.Caption := TrimRight(OutputText.Text);

Leonetto Creative Commons License 2023.05.17 0 0 9000

Sziasztok!

Szükségem lenne egy kis segítségre. Egy kis bitmapből szeretnék szöveges állományt kinyerni, és sehogy sem boldogulok a githubról letöltött tesseractOCR4 használatával. Köszönöm!

 

egy hazafi Creative Commons License 2023.03.11 0 0 8999

Sziasztok!

 

A CopyRect() függvény használható a FreePascal (Lazarus) -ban?

Azért kérdezem, mert nem találtam a leírását a világhálón kutakodva és szeretnék egy .BMP vagy .GIF (ha ez utóbbi használható) képcsíkot képkockákra bontva beolvasni.

És egyébként bonyolult ennek a használata? Hogyan kell ezt alkalmazni? Már persze, ha benne van a Lazarusban. Ha nincs, akkor van valami alternatív függvény rá, vagy marad az a megoldás, hogy a képcsíkból egy képszerkesztővel egyesével külön alképeket veszek ki és azokat töltöm be a LoadFromFile-lal?

Leonetto Creative Commons License 2022.12.26 0 1 8998

Köszönöm, ez jónak tűnik, tetszik! Ki fogom próbálni.

Előzmény: kisspetya (8997)
kisspetya Creative Commons License 2022.12.26 0 1 8997

Szerintem egy szóval se írtam, hogy fájlműveletre szükség lenne...

Kreálsz egy bitmap-et, a képernyő kívánt részét ide átmásolod és ennyi. Az egész a memóriában történik.

 

Ha még gyorsabbat (és még bonyolultabbat) akarsz, akkor ezeket ajánlom:

https://github.com/graphics32

https://prog.hu/tudastar/194693/bitmap-gyors-pixel-eleres

Előzmény: Leonetto (8996)
Leonetto Creative Commons License 2022.12.26 0 0 8996

Ezzel az a baj, hogy mire a képernyőtartalmat fájlba másolom, azon megkeresem a kívánt színű pixel helyét, és a képernyőnek erre a pontjára ráklikkelek, az már ekkor nem olyan színű, mert időközben megváltozott.

Előzmény: kisspetya (8995)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!