Lazarus code problemi

Lazarus code problemi

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Hajde neka ovde stavljamo teme sa problemima, da ne otvaramo 100 topica.

Problem: rad sa jpegom

var  jpg:TJPEGImage;  hdir:string; begin   hdir:=GetEnvironmentVariable('HOME');   jpg:=TJPEGImage.Create;   try      jpg.LoadFromFile(hdir+'/downloads/test1.jpg');      jpg.CompressionQuality:=80;      /// ------------- OVDE   finally     jpg.free;   end; end; 

e sada do "---OVDE" radi kako valja
Postavlja se pitanje kako da ga resizeujem

kod jpg.SetWidth ili SetWidthHeight, javlja gresku.
Kad stavim jpeg.canvas.BILOSHTA opet prijavljuje gresku

Jel moze neko da objasni?



Izdvojeno by snoop



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Pa... postavljanje nove sirine i visine za TJPEGImage ne moze da se uradi samo menjanjem Width i Height property-a ni TJPEGImage ni TCanvas objekta.

Jedini nacin koji mi pada na pamet je kreiranje jednog pomocnog objekta (TBitmap) u kome ce se slika smanjiti i zatim na osnovu nje kreirati nov TJPEGImage objekta
var  jpg: TJPEGImage;  tmp: TBitmap; begin   jpg:=TJPEGImage.Create;   jpg.LoadFromFile('cellceiling.jpg');   tmp:=TBitmap.Create;   tmp.Width := 20;   tmp.Height := 20;   tmp.Canvas.StretchDraw(Rect(0, 0, tmp.Width, tmp.Height), jpg);   jpg.Free;     jpg := TJPEGImage.Create;   jpg.CreateFromBitmapHandles(tmp.Handle, 0, Rect(0, 0, tmp.Width, tmp.Height));   jpg.CompressionQuality := 80;     jpg.SaveToFile('proba.jpg');   jpg.Free;   tmp.Free; end;



offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Hmm.. mislim da Jpeg kod delfija moze da se smanji preko canvasa, ali dobro de..
OK, probacu ovo da odradim kako si rekao.

BTW - koristi Try-finally. Ne znam da li si ovo pisao na brzaka, ali je pozeljno da se naviknes Very Happy


Druga stvar: kako nasetovati debugger?

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Kod Delphi-a moze, ali ovde ne moze... ako pogledas kod za TJPEGImage videces da su SetWidth i SetHeight deklarisane kao abstract funkcije i zato ne mozes da ih pozoves. SetWidth i SetHeight funkcije za Canvas jednostavno bacaju exception (hard coded)... mozda sam gledao pogresne fajlove, ali na osnovu onog sto sam video samo promena sirine ili visine nece da radi.

Kako nastelovati debugger!? Meni je debugger bio podesen cim se instalirao Lazarus. Imas dialog za podesavanje debugger-a (Enviroment->Debugger Options). Lazarus koristi GNU debugger (gdb). On se meni nalazi u c:\lazarus\mingw\bin\gdb.exe i ta putanja je vec podesena. Ostala podesavanja su na default-u kod mene. Postavljam breakpointe, koristim step into, pratim promenljive... sve radi ok. Mozda Lazarus ima problema da pokrene debugger na tvom racunaru (nije dobra putanja, nema dovoljno ovlascenja da pokrece druge programe, ...)!?

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Ne ovde nije nista podesheno (sto se tice debuggera), ali dobro, i to cu odraditi nekako. Stavio sam ionako chmod za lazarusa i neke dir-ove gde sam gurao neke komponente.

Nije tajna, pravim ImageResizer jer BIRT ne zadovoljava (moje) specifikacije.
Vec sam napravio interface, glavnu funkciju za smanjivanje. Sad mi ostaje samo da napravim thread-ove i da povezem sve to. Onda bacam (vama) na testiranje.

Dopuna: 19 Feb 2006 4:14

No, imam i drugi problem, sa RX-om.
Ne radi bas kao u delfiju.
Preciznije, problem sa TIniPropStorage

with IniPropStorage1 do begin     StoredValue['foldersrc']:=edtSrc.text;     Save;     Active:=false; end;

ovo snimi vrednost, do dushe u HEX.. ne znam da li je to OK...

Ovo sada NE vadi vrednost... poludecu

with IniPropStorage1 do begin    Active:=true;    Restore;    edtSrc.Text:=StoredValue['foldersrc']; end;

Help!

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ako smem da pitam, cemu sluzi TIniPropStorage?
Jel to nesto kao TIniFile?

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Ne, to je kao TFormStorage iz Delfija, tj Rx paketa. Cuva settingse forme i drugih varijabli koje tebi trebaju.

Dopuna: 20 Feb 2006 0:00

2 pitanja:

1. Kako se ubacuje ikona u projekat? Mislim na onu ikonu koja stoji na formi kad se program startuje i ona koja stoji na izvrshnom fajlu.

2. kako se ubacuje verzija, i da li to moze uopste?

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Koliko placas za ovu foru? Smile
Ja sam se namucio par dana, i saznao kako da to odradim za windows. jel ti znaci nesto, ili ti treba za Linux?

Dopuna: 20 Feb 2006 0:23

Komanda koja ce da kompajlira resource skriptu:
"c:\lazarus\pp\bin\i386-win32\windres.exe" -i resource.rc -o resource.res

Resource skripta jednog mog programa (resource.rc):
MAINICON ICON "resource.ico" 1 24 resource.manifest // Version Info 1 VERSIONINFO FILEVERSION 1,0,0,0 PRODUCTVERSION 1,0,0,0 {  BLOCK "StringFileInfo"   {   BLOCK "040904E4"    { VALUE "CompanyName", "MyCity" VALUE "FileVersion", "1.0.0.0" VALUE "FileDescription", "WitchHunter" VALUE "InternalName", "WitchHunter" VALUE "LegalCopyright", "Spasic Boban" VALUE "LegalTrademarks", "none" VALUE "OriginalFilename", "WitchHunter" VALUE "ProductName", "WitchHunter" VALUE "ProductVersion", "1.0.0.0"    }   }  BLOCK "VarFileInfo"  {   VALUE "Translation", 1033, 1252  } }
Prva linija je ikonica programa, pojavljuje se u fajl menadzerima, i gore na formi. Najbolje je da u ICO fajl strpas dve ikonice, jednu 48x48, jednu 16x16, da ne bi sistem odradio resize koji je uzasan.

Posle samo jos u main formu dodaj jos jedan resource u Initialisation (skroz dole kod mene):
initialization   {$I untmain.lrs}   {$ifdef win32}     {$R resource.res}   {$endif} end.
Onaj prvi resource je forma (untmain.lrs), a drugi je ikonica i verzija programa.

U resource skripti se jos spominje i manifest fajl, sluzi da bi program prihvatio Windows temu.
Evo i njega (resource.manifest):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity     version="1.0.0.0"     processorArchitecture="X86"     name="Lazarus Program"     type="win32" /> <description>A program made under Lazarus</description> <dependency>     <dependentAssembly>         <assemblyIdentity             type="win32"             name="Microsoft.Windows.Common-Controls"             version="6.0.0.0"             processorArchitecture="X86"             publicKeyToken="6595b64144ccf1df"             language="*"         />     </dependentAssembly> </dependency> </assembly>
U manifest fajlu ne mora nista da menjas.

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Hmmm... znaci na mishice.

Ko je trenutno na forumu
 

Ukupno su 422 korisnika na forumu :: 3 registrovanih, 1 sakriven i 418 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Sale, galijot, mrav pesadinac