![]() |
|
Pomoc s Delphi7 Personal - Printable Version +- Audioweb.cz (https://www.audioweb.cz) +-- Forum: Ostatní (https://www.audioweb.cz/forumdisplay.php?fid=16) +--- Forum: Smetiště (https://www.audioweb.cz/forumdisplay.php?fid=21) +--- Thread: Pomoc s Delphi7 Personal (/showthread.php?tid=7082) Pages:
1
2
|
Pomoc s Delphi7 Personal - dhaman - 22. 2. 2010 Ja som stare line mazal tak ze som nakreslil tu istu ciaru farbou pozadia... Len musis vediet povodne suradnice. Pomoc s Delphi7 Personal - dhaman - 22. 2. 2010 Mozno sa ti hodi... {Funkcia rozlozi retazec podla oddelovaca do poslaneho StringListu As_Text - rozdelovany retazec '1,2,3,4,5' As_Odd - oddelovac ',' Asl_res - vrati stringlist bude obsahovat 5 hodnot '1' - '5' Ab_Trim - ci sa ma po oddeleni retazec otrimovat '1 , 2' rozdeli na '1' a '2' } procedure RozlozString( As_Text : string; As_Odd : char; var Asl_res : TStringList; Ab_Trim : boolean = True ); var li_pos: integer; lch_char: char; begin lch_char:= As_Odd; Asl_res.Clear; if Length(As_Text) < 1 then begin Asl_res.Add(As_Text); Exit; //Co som to len dostal ? end; li_pos:= Pos(lch_char, As_Text); if li_pos = 0 then //Bez ciarky, tak co sa deje ? begin Asl_res.Add(As_Text); Exit; end; while (li_pos > 0) do begin if Ab_Trim then Asl_res.Add(Trim(Copy(As_Text, 1, (li_pos-1)))) else Asl_res.Add(Copy(As_Text, 1, (li_pos-1))); Delete(As_Text, 1, li_pos); li_pos:= Pos(lch_char, As_Text); if li_pos = 0 then begin if Ab_Trim then Asl_res.Add(Trim(As_Text)) else Asl_res.Add(As_Text); end; end; end; Pomoc s Delphi7 Personal - antonio - 23. 2. 2010 Díky, jak jednoduché, skvělé, geniální, ale je tu problém: Průhledný Image má na výšku 241px, udám-li souřadnice vykreslení pixelu na (0,240), tedy přesně spodní levý rožek, zbělá celý image a ten bod je průhledný. Image1.Canvas.Pixels[0,240]:=clRed; Druhá zajímavost: Log(1) je nula, vždycky je to nula i když v závorce provádím výpočet jako (10*0.1), (100*0.01), jen u (1000*0.001) to přesná nula není. ![]() Button1.Caption:=FloatToStr(Log10(1e3*1e-3)); Taky diky dhamane, je to je kapku složitý a nevím, zda to bude fungovat na bitmapě. Pomoc s Delphi7 Personal - MaBat - 23. 2. 2010 To není ani tak zajímavost, jako spíš základy výpočetní techniky ![]() Na průhlednost bych se vybod, jsou s tím akorát komplikace (pokud už neděláš třeba v OpenGL, jako že ne). Není důvod nevykreslit těch pár čar, tj. celý graf, úplně znova, vždy podle aktuálních voleb (evnt. začít na novém pozadí). Ušetříš si spoustu práce a prakticky nic to už dneska nestojí. Pomoc s Delphi7 Personal - antonio - 23. 2. 2010 Základy výpočetní techniky? Pokud to je ve výsledku 1, jakože je, tak tomu nerozumím. Znovunačíst ten graf (obrázek) jsem se už pokoušel, ale nedospěl jsem k tomu. Ta průhlednost je elegantnější, jen to má tu mouchu. Pomoc s Delphi7 Personal - MaBat - 23. 2. 2010 Tondo, jediný možný vysvětlení je, že to 1 není (jako že není). Už 0.1 se nedá v běžné reprezentaci zobrazit přesně. To, že ti to něco ukáže jako 1 (nebo 0), vůbec nemusí znamenat, že to je přesně. Počítače obecně nepočítají přesně, to jsem myslel těmi základy. Tady to třeba nevadí (většinou to nevadí), ale občas to dokáže nadělat dost nepříjemný problémy, je třeba s tím počítat. Pomoc s Delphi7 Personal - Boramyr - 23. 2. 2010 Když má bitmapa nastavenou vlastnost TransparentMode na tmAuto, což je zřejmě default, považuje se barva spodního levého pixelu za průhlednou. Tolik praví Help. Když chceš čmárat i do toho rohového pixelu, musíš patrně nastavit Image.Picture.Bitmap.TransparentMode:=tmFixed a navíc možná nastavit ručně Bitmap.TransparentColor, ale to možná nebude nutné, nezkoušel jsem. Ten příklad s Log10(0.001*1000) by tě neměl příliš překvapit. Kupříkladu ta jedna tisícina v 64bitovém floatu není 0.001 ale ve skutečnosti přibižně 0.00010000000000000002. No a co s tím dál provede výpočet toho logaritmu, ví asi jenom velcí drsňáci a ti co drátovali v procesoru floatovou aritmetiku. Pomoc s Delphi7 Personal - antonio - 8. 3. 2010 Díky Boro, stačilo jen TransparentColor. x:=430*Log10(f) f = frekvence 430 = délka dekády v px x = délka v px při f (x vyjde zaokrouhleno 205 při f=30) Nepřicházím na to, jak to udělat naopak, kdy znám x a chci zjistit f. Čekám, že to bude trivialita.
Pomoc s Delphi7 Personal - MaBat - 8. 3. 2010 f := Power(10.0, x / 430.0), neboli "10 umocněno na x/430". - Kdybys pak chtěl obecně zobrazit interval frekvencí <f0, f1> na interval pixelových souřadnic <x0, x1>, uděláš to takhle: x := k * log10(q * f); a nazpátek f := power(10, x/k) / q; kde koeficienty k, q jsou: q := power(10.0, (x1*log10(f0) - x0*log10(f1)) / (x0 - x1)); k := x0 / log10(q * f0); Pomoc s Delphi7 Personal - Boramyr - 9. 3. 2010 MaBate, počítám, že tuhle matematiku díky xoveru umíš nazpaměť i ožralej co? :-) Mimochodem, nejsi ty céčkař? Pomoc s Delphi7 Personal - MaBat - 10. 3. 2010 Tyhle kupecký počty a matematika, Boramyre?
Pomoc s Delphi7 Personal - Boramyr - 10. 3. 2010 Nerejpej, já bych si to musel nakreslit a odvodit :-) Tebe podezírám, že jsi to prostě vysypal. Pomoc s Delphi7 Personal - MaBat - 10. 3. 2010 Kdepak, kdysi dávno nakreslil a odvodil.. Když už to je takhle napsaný, tak je to jasný, ale z hlavy bych to celý dohromady taky asi nedal.
Pomoc s Delphi7 Personal - antonio - 19. 3. 2010 Výborně Mabate, díky, kupecký počty... ![]() Doposud jsem nenašel ukládání pod PNG, dalo by se nějak dohromady spřáhnout tento program? PNGOUT.EXE http://advsys.net/ken/utils.htm Ideálně, kdyby se dal integrovat do programu, chci moc, že? Pomoc s Delphi7 Personal - MaBat - 19. 3. 2010 Co tohle? http://www.koders.com/delphi/fid40BF644033E74AAA12059BD7F649F3AD7A500B2E.aspx?s=network#L1 Musel by sis k tomu jen postahovat a zprovoznit knihovny, ktery to pouziva (asi libpng, aj.) - http://delphi.pjh2.de/articles/graphic/png.php#NGImage Verim, ze neco z toho fungovat muze Delphi 2009 uz to pry umi primo v ramci TImage. Jinak to pujde asi ztuha. Spustit jiny program ze sveho muzes, ale to zrejme neresi problem, ne.
Pomoc s Delphi7 Personal - antonio - 19. 3. 2010 Díky moc, jen jestli by se našla dobrá duše a pomohla mi to do toho Delphi to nainstalovat. Řeším ten první link: háže mi to errory, něco dělám blbě. Chce to dll file, ono to nebude fungovat pouze s PngLib.pas a PngUnit.pas? První jsem úspěšně nainstaloval přes Install Component, vyskočí mi okno níž, pak beztak nefunguje příkaz WriteBitmapToPngFile, nikde žádný Help, takže absolutně nevím co s tím. |