Jít do obsahu fóra

Nejsi přihlášen. Přihlas se nebo se zaregistruj.


(Stránka 2 z 2)

Audioweb.cz » Smetiště » Pomoc s Delphi7 Personal

  Stránky: ««« 1 2

RSS

Příspěvky [21 až 36 z 36]

Re: Pomoc s Delphi7 Personal

Ja som stare line mazal tak ze som nakreslil tu istu ciaru farbou pozadia... Len musis vediet povodne suradnice.

OB 4 pasmo aktiv 15" H frame ala Linkwitz | rpi4 moode + CamillaDSP | ESI GIGAPort eX | 4x HYPA10 (pasiv KEF LS50 meta | CW DAC1 | HYPA17)

Re: Pomoc s Delphi7 Personal

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;

OB 4 pasmo aktiv 15" H frame ala Linkwitz | rpi4 moode + CamillaDSP | ESI GIGAPort eX | 4x HYPA10 (pasiv KEF LS50 meta | CW DAC1 | HYPA17)

Re: Pomoc s Delphi7 Personal

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í. smile

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ě.

(upravil MaBat 23. 2. 2010 21:04)

Re: Pomoc s Delphi7 Personal

To není ani tak zajímavost, jako spíš základy výpočetní techniky smile

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í.

Re: Pomoc s Delphi7 Personal

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.

(upravil MaBat 23. 2. 2010 22:33)

Re: Pomoc s Delphi7 Personal

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.

Re: Pomoc s Delphi7 Personal

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.

Re: Pomoc s Delphi7 Personal

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. smile

(upravil MaBat 8. 3. 2010 21:06)

Re: Pomoc s Delphi7 Personal

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

Re: Pomoc s Delphi7 Personal

MaBate, počítám, že tuhle matematiku díky xoveru umíš nazpaměť i ožralej co? smile Mimochodem, nejsi ty céčkař?

Re: Pomoc s Delphi7 Personal

Tyhle kupecký počty a matematika, Boramyre? smile

Re: Pomoc s Delphi7 Personal

Nerejpej, já bych si to musel nakreslit a odvodit smile Tebe podezírám, že jsi to prostě vysypal.

(upravil MaBat 10. 3. 2010 15:05)

Re: Pomoc s Delphi7 Personal

Kdepak, kdysi dávno nakreslil a odvodil.. smile Když už to je takhle napsaný, tak je to jasný, ale z hlavy bych to celý dohromady taky asi nedal.

Re: Pomoc s Delphi7 Personal

Výborně Mabate, díky, kupecký počty... lol

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?

(upravil MaBat 19. 3. 2010 15:45)

Re: Pomoc s Delphi7 Personal

Co tohle?
http://www.koders.com/delphi/fid40BF644 … 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 smile 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.

Re: Pomoc s Delphi7 Personal

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.

http://audioweb.cz/uploads/thumbs/2_nevim.png

Příspěvky [21 až 36 z 36]

  Stránky: ««« 1 2

Audioweb.cz » Smetiště » Pomoc s Delphi7 Personal

Podobná témata


~±«|»¼½¾²³&@µΩπØ$£