String a stream

vložil Radek Červinka 4. května 2012 00:07

Pokud potřebujeme zapisovat někam data, nebo jen předávat data do jiné části programu, je výhodné používat některý z následníků TStream. Převážná část knihovny Delphi nebo knihoven třetích stran podporuje práci se streamy. Často ale také potřebujeme jen v paměti vytvořit datový proud a ten později zpracovat.

Základní třídou je TMemoryStream. V podstatě představuje data uložená v paměti - jakoby soubor v paměti. Pro operace s ním jsou určité metody, ale přece jen by to chtělo něco čistějšího, zejména pokud pracujeme s textovými daty. Řešením je použití např. TStringWriter, TStreamWriter resp. přímo TStringStream (nebo TStringBuilder) atd.

Pro neunicode Delphi je TStringStream implementován v podstatě jen jako string, což mi přišlo pěkné. V Unicode Delphi se jedná o následníka TBytesStream (resp. TMemoryStream).

Více...

Tagy:

Praxe | Začátečníci

Chyba pro dnešní den

vložil Radek Červinka 19. dubna 2012 18:40

Je třeba to zveřejnit jako odstrašující případ (kód je trochu upraven)


const
  ciTabBarInterval = 0;
  ciTabBarDay = 1;
  ciTabBarWeek = 2;
var
  bIsInterval: Boolean;
…

bIsInterval:= not TabBar.SelectedTab.Index in [ciTabBarDay, ciTabBarWeek];

Problém byl, když byl TabBar.SelectedTab.Index = 0. Takto samostatně je to evidentní že? Více...

Tagy: , ,

Praxe | Začátečníci

Problémy s TStringList

vložil Radek Červinka 17. dubna 2012 23:35

Přišel mi mail od čtenáře Jiří Milička a zkusím ho zde publikovat - třeba to někomu pomůže.

Ve zkratce tvrdí, že přišel na dvě chyby s TStringList: Více...

Tagy: ,

Praxe

Problém s formátováním datumu na Vistách a výše

vložil Radek Červinka 28. března 2012 22:40

Pokud narazíte na problém, že na Vistách se Vám bude špatně formátovat datum (03/27/2012 místo 27.3.2012) vězte, že je to problém instalace Vista a dalších verzí, kdy je oddělovač data nastaven na dvouznakovou hodnotu. Problémem jsou zasaženy asi Delphi 7 a vyšší. Více...

Tagy: , , ,

Praxe

HyperLinky v RTF - aktualizováno

vložil Radek Červinka 27. března 2012 21:31

Snažím se udělat v RTF hyperlink, který má skrytou část adresy. Prostě klasický odkaz, který něco zobrazuje ale odkazovaná část je jiná (Delphi na webu), s tím že v programu odkazovanou část si odchytím a místo toho zobrazím úplně něco jiného.

aktualizováno

Více...

Tagy:

Komponenty | Praxe

AV při stisku ALTGr

vložil Radek Červinka 20. února 2012 22:16

Pokud používáte Delphi 7 - Delphi 2007 (možná i starší) tak dejte pozor na možný problém s pravým tlačítkem ALT (aka ALTGr). Problém byl vyřešen v D2009. Více...

Tagy: ,

Praxe

Malý trik z Delphi 1 platný do dneška

vložil Radek Červinka 10. února 2012 21:40

Malý trik co fungoval v Delphi 1 a funguje i dnes.

Mějme na formuláři tlačítko, vybereme ho a za pomoci CTRL + X vyjmeme do schránky. Přepneme se do editoru kódu nebo do libovolného jiného editoru a dáme vložit.

V editoru se nám objeví (trošku komplikace s nabodeníčkem)

object Button2: TButton
  Left = 48
  Top = 96
  Width = 75
  Height = 25
  Caption = 'tla'#269'idlo'
  TabOrder = 1
end

Více...

Tagy: ,

Praxe

Delphi XE a problém s generiky

vložil Igor Gottwald 2. února 2012 20:46

Dnes bych se s našimi čtenáři rád podělil o jednu nepříjemnou zkušenost z Delphi XE, související s použitím generických struktur a tříd.

Dobrá zpráva je, že v Delphi XE2 Update 3 se tato chyba již neprojevuje. Problém se týká případů, kdy nadefinujete generickou strukturu s více jak dvěma typy (TMyStruct<A,B> = record … end), velikost implementace není větší než 4 byty a voláte funkci, která má tuto strukturu vrátit jako svůj výsledek.

Více...

Tagy: ,

Praxe

Případ TinyDB a XE2

vložil Radek Červinka 28. ledna 2012 22:55

Pod článkem s anketou ohledně nejvyšší používané verze jsou i dva komentáře stěžující si na problémy s XE2. Leoš si stěžoval na design mód a stabilitu ohledně IBX komponent a JaroB na problémy s portací TinyDB z XE do XE2. Bohužel Leoše v tom asi musím nechat, jelikož IBX komponenty a já se nemáme rádi, ale ohledně TinyDB jsem si řekl, že bych to mohl zkusit.

Výsledkem byl zajímavý možný problém ohledně TStream.

Více...

Tagy: , ,

Praxe

Re: O konvencích - JaroB

vložil Jaro Beneš 18. ledna 2012 19:11

JaroB postnul komentář, který je zajímavý, ale nečitelný díky formátování, takže jsem z něho udělal nový článek a komentář smazal. Ne ze vším sice na 100% souhlasím, ale většinou ano a je to zajímavé a inspirující (tedy až na tu část o CnPack a eventy, Frames a použití resource string - přístup k nim je výrazně pomalý). Jen se mi zdá, že konvence <> zásada dobrého návrhu aplikace.

Více...

Tagy: ,

Praxe

O konvencích

vložil Radek Červinka 12. ledna 2012 20:50

Je mi jasné, že s následujícím nebude hodně lidí souhlasit, ale je to jen moje zkušenost a nemusíte samozřejmě souhlasit.

Dlouhým vývojem a ve spolupráci se spolupracovníky nyní používáme určité principy při pojmenovávání všeho možného. Zkusím je nastínit a vysvětlit proč mi to vyhovuje i když se to někdy odlišuje od oficiální konvenze Delphi. Jedná se o tři oblasti: komponenty, soubory a proměnné + metody.

Více...

Tagy: ,

Praxe

Stažení souboru za pomocí WinInet

vložil Radek Červinka 3. ledna 2012 00:40

Sem tam potřebuji stáhnout jednoduchý soubor z webu. Většinou to dělám za pomocí Synapse a nějaké procedury z jednotky httpsend. Člověk ale musí navíc dělat opičky kolem zjišťování proxy - buďto z registru (HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings) nebo za pomocí jednotky ze synapse SynaMisc a procedury GetIEProxy.

Ale zdá se mi, že v případě autokonfigurace proxy ani jeden ze způsobů nefunguje. Existuje ještě možnost stažení souboru přes WinInet, což je součást instalace IE (resp. nyní nejen IE) a používá to část IE a tak je velká šance že to projde přes různé filtry (teda doufám).

Více...

Tagy: , ,

Praxe

TMenuItem a reference na objekty

vložil Radek Červinka 14. prosince 2011 21:32

Poněkud zavádějící nadpis, ale jedná se o případ, kdy potřebujeme mít asociaci mezi položkou menu (nebo něčím podobným) a nějakou datovou strukturou.

Poslední dobou jsem potřeboval vytvářet dynamicky položky menu a zároveň k nim mít vazbu na nějakou datovou strukturu. Za začátku jsem to řešil jako odkaz přes Tag někam, případně v Tag jsem měl přímo objekt, ale to byl problém s uvolňováním a tak mne napadlo jiné řešení (předpokládám, že mi v komentářích všichni napíší že je to stará známá věc - ale mne to prostě předtím nenapadlo).

Více...

Tagy: , ,

Praxe

Delphi a SFTP

vložil Radek Červinka 5. prosince 2011 22:43

SFTP není FTP přes SSH, ale jiný protokol, který FTP čím dál více nahrazuje. Jaké komponenty můžeme v Delphi použít?

Více...

Tagy: , , ,

Komponenty | Praxe

Ribbon control a styly

vložil Radek Červinka 30. listopadu 2011 23:29

Pokud použijete VCL styly z Delphi XE2 a TRibbon control (resp. to asi souvisí s Glass window na Vista+) zjistíte několik problémů ohledně kreslení. Naštěstí existuje možnost jak upravit kreslení libovolného prvku a tak jsem tuto možnost využil a sprostě jsem kreslení obešel.

Více...

Tagy: , ,

Praxe

Naše nabídka

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32 a Win64 (a Mac OSX, s výhledem na iPhone a Android díky FireMonkey) na současném trhu (včetně Windows 7).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Burza delfínů nabízí pracovní možnosti pro programátory v Delphi.

Anketa

Poslední komentáře

Comment RSS