Hirdetés
- Milyen házat vegyek?
- Autós kamerák
- OLED TV topic
- Nvidia GPU-k jövője - amit tudni vélünk
- Amlogic S905, S912 processzoros készülékek
- Házimozi haladó szinten
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Kormányok / Autós szimulátorok topicja
- iPad topik
- Milyen belső merevlemezt vegyek?
Új hozzászólás Aktív témák
-
Rolly
veterán
válasz Tele von Zsinór #1398 üzenetére
az 1. kb értem bár nem 100%ig
a 3-at nem vágom sajnos -
ViragL
tag
Ok, csak javaslat volt.
Egyébként a Delphi helje a Borland büszkesége lehet, az egyik legjobb, ha nem a legjobb. A dinamikus tömbre konkrétan emlékszem, hogy nagyon szépen le van írva. A filelistás dolgot is megtalálod a helpben, ha szerencséd van van hozzá példakód is az alapján el kell, hogy boldogulj.
[Szerkesztve] -
btotyi
tag
Ez működik :
Ctrl + 0 (nem numerikus taszton !)
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If (key = $30) and (ssCtrl in Shift)
then
begin
edit1.Text := edit1.Text + 'Ř';
end;
end;
Az edit mező Font propertyn állíts be pld Arial fontot. -
btotyi
tag
Tedd rá egy button onclick-re
procedure TForm1.Button1Click(Sender: TObject);
Var i : integer ;
Button : TButton ;
begin
for i := 0 to 9 do
begin
Button := TButton.Create(Self);
Button.Caption := IntToStr(I) + '. gomb';
Button.Parent := Self;
Button.Top := i * 26 ;
Button.Visible := true ;
end;
end; -
Tele von Zsinór
őstag
Tegyük fel pl hogy neked integerből kell egy tömb, azt így deklaráld:
var a: array of integer;
utána valahol a futás során kiderül, hogy 5 eleme kéne hogy legyen:
setlength(a,5);
ezután ugyanaz, mintha ezt csináltad volna:
var a: array[0..4] of integer;
és persze bárhol lehet állítgatni kisebbre, nagyobbra. Ha kisebbre veszed, akkor a végéről kiesnek az elemek, azokat nem kapod vissza, ha megint nagyobbra állítod.
[Szerkesztve] -
Rolly
veterán
válasz Tele von Zsinór #1407 üzenetére
hmm ez tök jó köszi a segítséget.
-
bukica
csendes tag
Oké köszi ezt Én is kipróbáltam, és jó is, csak a font charsetet ANSI_CHARSET-re kell állítani, akkor jelenik meg az átmérő jel.
Már csak az az a probléma, hogy a billentyű lenyomásakor a beírja a karaktert, és a kurzor a sor elejére ugrik.
Hogyan lehet azt megoldani, hogy maradjon a szöveg végén a kurzor? -
ViragL
tag
Nem konkrétan delphi, de mivel úgyis elsősorban delphisek használnak IB-t vagy FireBirdet, ezért itt is megkérdezem: Van itt olyan ember aki IBExpertet használ?
-
-
bukica
csendes tag
Egy másik problémám, hogy lehet egy 'státusz' sort kitenni egy form-ra, hogy azon programfutás közben különböző dolgokat ki tudjak írni (rekord számláláló,üzenetek stb.), és ezek azonnal meg is jelenjenek, nem csak akkor mikor az adott feladat lefutott?
Nem tudom elég érthetően fogalmaztam-e? Pl. egy indexelés előtt ki akarom írni, hogy 'Türelem indexelés', majd mikor az indexelés lefutott, eltüntetni az üzenetet? -
bukica
csendes tag
Hogyan lehet a progam futását pl. 2 másodpercre várakoztatni (2 mp szünet)?
-
Rolly
veterán
színt szeretnék választani programban. van valami colordialog
Arra lennék kíváncsi hogy milyen formában tudom a választott színt visszakapni. -
P.H.
senior tag
A TColorDialog-ot kiteszed a form-ra, majd a programban:
if ColorDialog1.Execute then xxx:=ColorDialog1.Color;
Ha az .Execute TRUE-val tér vissza, akkor az OK-ra kattintottak rajta, a .Color-ból olvasható az utolsó kiválsztott szín.Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙
-
Rolly
veterán
tehát ebből hogyan tudom kinyerni a r,g,b értékeit?
mod 3B majd
div 2B
mod 2B div B
mod B?
(div egészrészes osztás mod maradék )
találtm egy ilyet
procedure rgbValues(color:TColor;var red,green,blue:byte);
begin
red :=GetRValue(color);
green:=GetGValue(color);
blue :=GetBValue(color);
end;
azaz ha nekem egy 0.0 és 1.0 közötti szám kell színenként (1.0 a 255 0.0 a 0) akkor a kód így néz ki:
procedure rgbValues(color:TColor;var red,green,blue:double);
begin
red :=(GetRValue(color)/255);
green:=(GetGValue(color)/255);
blue :=(GetBValue(color)/255);
end;
[Szerkesztve] -
Rolly
veterán
honnan tudom meg hogy egy string tartalmaz-e egy másik stringet?
-
ngb
csendes tag
Hi!
Nekem egy olyan kérdésem lenne, hogy megírtam delphibe egy programot és azt szeretném egy weblapba integrálni, akkor azt hogyan tuom megcsinálni? (ha egyeltalán meg lehet) -
P.H.
senior tag
Legegyszerűbben a pos függvénnyel.
Pl.: i:=pos('amit keresel','amiben keresel').
Longint típust ad vissza, ha ez nulla, akkor a keresett szöveg nincs a sztringben, nemnulla esetén annak első előfordulási pozíciója.
[mod]: a kis- és nagybetűk között különbséget tesz.
[Szerkesztve]Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙
-
ViragL
tag
Hajrá! Nemtudom mennyire lesz összetett a program amit csinálsz, az általad talált delay függvényt sem ismerem, de így látatlanban azt mondom, hogy problémás lesz a dolog. Gondolom a jó öreg ''pascalos'' delay-t ültette át valaki delphibe, ha igazam van akkor az aktuális szál működését függeszti fel a paraméterben megadott időre, ha ez így van, akkor, mivel egy szálad van összesen az egész program működését felfüggeszti arra az időre, ergo se menü se semmi nem lesz használható addig. Nekem sok bajom volt vele anno, csak azért írom ezt ide, hogy ha hasolót tapasztalsz, tudd miért van.
MOD: nem off
[Szerkesztve] -
bukica
csendes tag
Azt meg lehet oldani, hogy a StatusBar felosztott részeit különböző színűekre állítsam, vagy használjak valamilyen más megoldást?
-
Rolly
veterán
nekem egy ilyen sorból kellene
sor:='hello belatipus bela1 0.0 0.0 0.0';
ból a 0.0 0.0 0.0 string.
a gondom az hogy a 0.0 0.0 0.0 lehet akár 1.0 1.0 1.0 is de lehet 1.0 0.0 0.111 is meg akármilyen érték. Tulajdonképpen 3 db double
hogyan tudnám kinyerni a stringből -
g4dg3t
senior tag
legegyszerubben Pos, PosEx es Copy fuggvenyekkel (elofeltetel hogy a stringben mindig a 3. space-tol kezdodjek a kerdeses reszlet):
var
Ind: integer;
OutStr: string;
...
Ind:=Pos(#32,Sor);
if Ind > 0 then Ind:=PosEx(#32,Sor,Ind + 1);
if Ind > 0 then Ind:=PosEx(#32,Sor,Ind + 1);
if Ind > 0 then OutStr:=Copy(Sor,Ind + 1,Length(Sor) - Ind)
else OutStr:='';
...
Pos es PosEx fv helyett ciklust is szervezhetsz...kinek mi elegansabb.
[Szerkesztve] -
Rolly
veterán
-
g4dg3t
senior tag
úgy szerinted nem jó ha poszal megkeresem az első pontot, s index-1től kopizok?
Ha elofeltetelkent kikothetjuk, hogy a keresett resz elott nem fog ''.'' szerepelni a string-ben, akkor jo lehet ugy is. Tehat ''szin.ize bela.bigyo 0.0 0.0 0.0'' sornal gondot okozna.
Jol ertem, hogy a Pos fv-t belepesi feltetelkent hasznalod? Az igy vegtelen ciklust kell, hogy okozzon. Postold azt a while ciklust, este megneznem.
[Szerkesztve] -
P.H.
senior tag
Ha mindenképp a string végén van a 3 lebegőpontos, space-szel elválaszva, akkor haladj hátulról.
var
..I,J,Pos: longint;
..Szam: array [1..3] of double;
..Data,Temp: string;
..begin
....data:='szin bela 0,0 0,0 0,0';
....for pos:=3 downto 1 do begin i:=length(data);
......while (i > 1) and (data <> ' ') do dec(i);
......temp:=copy(data,i+1,MAXLONGINT);
......szam[pos]:=strtofloat(temp);
......delete(data,i,MAXLONGINT); end; end;
(ha a copy() vagy a delete() utolsó paramétere MAXLONGINT, akkor a string végéig fog másolni/törölni).
Ha az sem igaz, hogy biztosan space-ekkel vannak elválasztva, akkor
(data <> ' ') helyett mehet (datain ['0'..'9','.',',' ] ), akkor is törölni fogja az elválasztó karaktert.
Arra viszont figyelj, hogy ha StrToFloat-tal konvertálod számmá, akkor angol Windows alatt . (pont) a tizedes-elválasztó, magyar alatt pedig ',' (vessző), különben leáll exception-nal. Érdemes így írni, amit írtam fentebb:
......try..szam[pos]:=strtofloat(temp);
......except for j:=1 to length(temp) do
........if temp[j] = '.' then temp[j]:=','
........else of temp = ',' then temp[j]:='.';
........try szam[pos]:=strtofloat(temp);
........except { ekkor hiba van, 2 pont vagy 2 vessző } end; end;
Ekkor a pontokat lecseréli vesszőre és a vesszőket pontokra, és lemegy, mindegy, milyen nyelvű a Windows. Illetve nem teljesen, mert ha a Vezérlőpontban a tizedes-elválasztót átírták valami másra, akkor így jártak :)
[mod]: csak normális kinézetű lesz lesz lassan...
[Szerkesztve]Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙
-
P.H.
senior tag
Csak elferült valamiért dőlt betűsre... Na mindegy.
Még annyi, hogy
- ha tényleg '0.0' formában jönnek az adatok, akkor magyar Windows alatt mindenképp kell a második, try-except-es rész, az StrToFloat-hoz (default a vesszős elválasztás)
- a második kódban term. else if áll, 'else of' helyett.
- a második except-be után akkor is bele fog futni, ha a string végén kevesebb, mint 3 szám van, amellett, hogy ha 1-nél több tizedes-elválasztó van. (a '.1' és a '1.' string-eket nem tudom hirtelen, hogy kezeli-e az StrToFloat helyesen, de talán igen)
[Szerkesztve]Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙
-
Rolly
veterán
olyat hogyan lehet egyszerűen szépen csinálna ha van három gombom ami csak adott esetben kell egyébként nem látható. tudom hogy van láthatósága minden gomban de nem akarom gombonként állítani hanem valami csoportba kéne rendezni őket :$
Új hozzászólás Aktív témák
- Eladó kerregő Lian Li Trinity II Performance AIO 360mm!
- Latitude 5520 15.6" FHD IPS i5-1145G7 Iris Xe G7 16GB 512GB NVMe WIFI 6 gar
- GAMER PC - RTX 2060 6GB - RYZEN 5 4500 - 16GB DDR4 RAM - 240GB SSD - 500GB HDD
- Új iPhone 14 Pro 256GB deep purple gyári független 6 hó gari
- Eladó Gigabyte GA-Z87X-D3H Alaplap!