A primeira expedição ao Corcovado ocorreu no ano de 1834 e foi liderada pelo próprio D.Pedro I, sendo construído assim o primeiro acesso cume do morro.
A primeira expedição ao Corcovado ocorreu no ano de 1834 e foi liderada pelo próprio D.Pedro I, sendo construído assim o primeiro acesso cume do morro.
O que é BookMark ?
É fácil sim!
unit uExemploBookMark;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, DBClient, Grids, DBGrids;
type
TExemploBookMark = class(TForm)
DBGrid1: TDBGrid;
CDS: TClientDataSet;
ds: TDataSource;
BitBtn1: TBitBtn;
MemorizaBookMark: TBitBtn;
LocalizaBookMark: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure MemorizaBookMarkClick(Sender: TObject);
procedure LocalizaBookMarkClick(Sender: TObject);
private
{ Private declarations }
BookMarkString : String; // essa variavel ira auxiliar no uso do bookmark
public
{ Public declarations }
end;
var
ExemploBookMark: TExemploBookMark;
implementation
{$R *.dfm}
procedure TExemploBookMark.BitBtn1Click(Sender: TObject);
var
I: Integer;
begin
// aqui estamos criando nossa tabela temporaria
CDS.FieldDefs.Add('codigo',ftInteger);
CDS.FieldDefs.Add('descricao',ftString, 50);
CDS.CreateDataSet;
// aqui estamos criando os registros na tabela temporaria
for I := 1 to 10 do
begin
CDS.Append;
CDS.FieldByName('codigo').AsInteger := i;
CDS.FieldByName('descricao').AsString := 'Descrição - '+inttostr(i);
CDS.Post;
end;
end;
procedure TExemploBookMark.LocalizaBookMarkClick(Sender: TObject);
begin
// dessa maneira dizemos ao clientdataset para ir para oendereco
// armazenado na nossa variavel
CDS.Bookmark := BookMarkString;
end;
procedure TExemploBookMark.MemorizaBookMarkClick(Sender: TObject);
begin
// aqui estamos atribuindo o endereco atual do registro na nossa
// variavel
BookMarkString := Cds.Bookmark;
end;
end.
“Creatividad
Hasta ahora no conozco un lenguaje de programación el cual no te brinde diferentes soluciones a un mismo problema. Es lo que comúnmente se llama "There Is More Than One Way To Do It", que en español se traduce como: hay más de una manera para lograrlo.
Por eso creo que el primer punto que un buen programador debe de tener es creatividad. Creatividad para crear soluciones factibles, rápidas y sencillas a problemas complicados.
Por mi experiencia, esto es lo más difícil, pues la creatividad no la aprendes, no hay un libro acerca de "Creatividad Básica", no existen cursos que te puedan dar creatividad y la creatividad no la compras en la tienda. Creo que la creatividad la llevas dentro y unos tenemos poca y otros mucho más.
Pero lo que es un hecho es que sin creatividad inmediatamente te vuelves un mal programador, porque aunque la solución sea evidente es la falta de esta misma creatividad que te imposibilita ver lo que esta enfrente de ti.
Conocimientos
Yo creo que un buen programador más que saber el ¿cómo? sabe el ¿por qué? de las cosas. No es lo mismo saber como solucionar un problema a saber realmente como funciona esa solución.
Por ejemplo, en el artículo que hice anterior a este acerca de la memoria en perl, les dije que para poder usar la memoria de manera eficiente era importante comprender como es que funcionaba la liberación de la misma por perl para poder usarlo a nuestro favor. En ese artículo más que el ¿cómo? vimos el ¿por qué?.
Entonces como segundo punto un buen programador debe de comprender porque un lenguaje actúa de esta u otra manera, para poder usarlo al 100%.
Consulta
Es imposible que una sola persona sepa las soluciones a completamente todos los problemas, y la verdad es que la mayoría de nosotros ha de saber como un 50% de las capacidades completas de un lenguaje de programación.
Es aquí donde entra la importancia de este punto. Todo buen programador debe de tener la capacidad de encontrar conocimiento necesario de manera rápida, ya sea buscando en libros o en la web.
Muchas veces yo me veo en la necesidad de buscar ciertas funciones que se que existen pero que no recuerdo las sintáxis completamente, para lo que uso mi LIBRO DE CONSULTA, el cual dividí en 3 categorías: Básico, Intermedio y Experto para una mejor consulta.
Eficiencia
Un buen programador debe de llegar a soluciones de manera rápida y eficiente. Es lógico que varias veces se necesitan hacer pruebas para saber si un código funciona. Pero creo que todo buen programador debe de tener una guía de trabajo, un plan personal con el cual lleva a cabo todos sus desarrollos.
Este plan debe de tener pasos muy claros, para evitar otro tipo de confusiones. Este tema lo trate en: Guía para iniciar un proyecto.
Creo que estos cuatro puntos son suficiente para saber si un programador es bueno o malo. Pero recuerden que esta es mi opinión personal, de seguro deben de haber maneras mejores de evaluar, pero yo siempre lo hago por estos 4 puntos.
“Indicadores positivos:
le apasiona la tecnología
programa en su tiempo libre, es su hobby
hablará largo y tendido de cualquier tema técnico si se le pregunta
ha tenido proyectos personales significativos a través de los años
aprende nuevas tecnologías por si solo
tiene opiniones fuertes sobre cual tecnología es la mejor para varios usos
se siente incomodo trabajando con tecnologías que el crea no son "correctas"
puede mantener una buena conversación en cualquier variedad de temas, no tan solo aquellos que sean técnicos
empezó a programar mucho antes de entrar a la universidad o al trabajo
tiene proyectos personales grandes que no necesariamente aparecen en el résumé
conoce de una gran variedad de tecnologías (las cuales no necesariamente están en el résumé)
Indicadores negativos:
Solo programa mientras está en el trabajo
No le gusta hablar de programación, aunque se le pregunte
Aprende nuevas tecnologías cuando la compañía lo envía a tomar cursos
Usa la tecnología que le indiquen, cualquier tecnología es "buena"
Empezó a programar en la universidad
Toda su experiencia en programación está en su résumé
Enfocado en uno o dos plataformas de programación (ejemplo: todo lo que tiene que ver con aplicaciones de java) sin ninguna experiencia fuera de esa plataforma. “

Como já dizia Nelson Rodrigues: “Existem dois tipos de torcedores: os que já descobriram que são Flamengo e os que ainda não descobriram”.
Apareçam por lá!
Site Oficial do Bondinho:
Bondinho Pão de Açúcar
Fotos do bondinho:
“Colegas,
Utilizando um JvCheckTreeView, gostaria de, ao checar um item filho, também
checar o item pai. Alguém sabe como fazer?
Grato”
procedure TForm23.JvCheckTreeView1Click(Sender: TObject);
var
Node : TJvTreeNode;
begin
if TJvTreeNode(JvCheckTreeView1.Selected).Checked then
begin
Node := TJvTreeNode(JvCheckTreeView1.Selected.Parent);
Node.Checked := True;
end;
end;
Espero mais uma vez estar ajudando!
Boa sorte e abs!
O que é interface?
Type
TBrasileiro = class
public
function Trabalhar:Boolean; virtual; abstract;
function PagarImpostos:Boolean; virtual; abstract;
end;
Type
IBrasileiro = Interface
['{31A22D9F-E857-4892-9D17-79FBE9AA7237}']
function Trabalhar:Boolean;
function PagarImpostos:Boolean;
end;
Façamos agora duas observações quanto ao código acima!
Posteriormente você verá que não foi utilizado especificadores de visibilidade ( private, protected, public, lembra deles ?), isso porque todos os métodos declarados numa interface são públicos por default.
De onde vem ?
type
IInterface = interface
['{00000000-0000-0000-C000-000000000046}']
function QueryInterface(const IID: TGUID;
out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
IUnknown = IInterface;
{$M+}
IInvokable = interface(IInterface)
end;
{$M-}
{ TInterfacedObject provides a threadsafe default
implementation of IInterface.You should use TInterfaceObject
as the base class of objects implementing interfaces.; }
TInterfacedObject = class(TObject, IInterface)
protected
FRefCount: Integer;
function QueryInterface(const IID: TGUID;
out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
public
procedure AfterConstruction; override;
procedure BeforeDestruction; override;
class function NewInstance: TObject; override;
property RefCount: Integer read FRefCount;
end;
Como é a vida com as interfaces?
Bom agora que você já sabe quando as interfaces ficaram disponíveis no Delphi, como era a vida antes dela, vamos ver como é a vida com elas. Vamos implementar duas interfaces simples, observe o exemplo abaixo.
ITrabalhador = Interface
['{31A22D9F-E857-4892-9D17-79FBE9AA7237}']
function Trabalhar:Boolean;
function PagarImpostos:Boolean;
end;
ISerHumano = interface
['{29D48E8C-EFF0-461C-9B9E-D5D7478E5B87}']
function AndarEreto:Boolean;
function Falar:Boolean;
procedure Ouvir;
procedure Correr;
end;
Basicamente podemos declarar nossa classe como:
TBrasileiro = class(TInterfacedObject, ITrabalhador,
ISerHumano);
[Pascal Error] Unit22.pas(33): E2003 Undeclared identifier: 'AndarEreto'
[Pascal Error] Unit22.pas(33): E2003 Undeclared identifier: 'Falar'
[Pascal Error] Unit22.pas(33): E2003 Undeclared identifier: 'Ouvir'
[Pascal Error] Unit22.pas(33): E2003 Undeclared identifier: 'Correr'
[Pascal Error] Unit22.pas(33): E2003 Undeclared identifier: 'Trabalhar'
[Pascal Error] Unit22.pas(33): E2003 Undeclared identifier: 'PagarImpostos'
Nossa classe utilizando interfaces!
TBrasileiro = class(TInterfacedObject, ITrabalhador,
ISerHumano)
public
// métodos da interface ITrabalhador
function Trabalhar:Boolean;
function PagarImpostos:Boolean;
// métodos da interface ISerHumano
function AndarEreto:Boolean;
function Falar:Boolean;
procedure Ouvir;
procedure Correr;
end;
Postergando a implementação da interface:
TBrasileiro = class(TInterfacedObject, ITrabalhador,
ISerHumano)
public
// métodos da interface ISerHumano
function AndarEreto:Boolean;
function Falar:Boolean;
procedure Ouvir;
procedure Correr;
// postergando a implementacao da interface ITrabalhador
function GetTrabalhador:ITrabalhador;
property Trabalhador:ITrabalhador
read GetTrabalhador Implements ITrabalhador;
end;
Implementando a interface ITrabalhador:
TProgramador = class(TInterfacedObject, ITrabalhador)
public
// métodos da interface ITrabalhador
function Trabalhar:Boolean;
function PagarImpostos:Boolean;
// métodos dessa classe
procedure Dormir;
procedure Acordar;
procedure Comer;
procedure SurfarNaNet;
procedure Programar;
end;
function TBrasileiro.GetTrabalhador: ITrabalhador;
begin
Result := (TProgramador.Create) as ITrabalhador;
end;
Outra pecuriaridade importante!
Conclusão.
"Rio de Janeiro acaba de ser escolhida a sede das Olimpiadas de 2016. O anúncio oficial foi feito agora há pouco, em Copenhague, onde se reuniu o Comitê Olímpico Internacional (COI) para a realização a eleição o que decidiria a cidade-sede dos Jogos. A capital carioca disputava na última fase votação com a espanhola Madri. O anúncio oficial foi feito às 13h30."
leia na integra em : Rio de Janeiro é eleita a sede das Olimpiadas de 2016
Na página dele vocês terão a oportunidade de saber mais sobre o livro, os motivos que levaram meu irmão a colocá-lo gratuitamente na internet, vocês vão gostar tenho certeza. A capa do mesmo está no banner ao lado, confira!
Obrigado à todos !
Clique no link para baixar o livro
Livro de poesia grátis
unit UCriarClasseString;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, AdvSmoothDock, jpeg, ExtCtrls, StdCtrls, Buttons;
type
TminhaClasse = class (TDataModule)
private
FPrimeiraClasse: String;
procedure SetPrimeiraClasse(const Value: String);
published
property PrimeiraClasse:String read FPrimeiraClasse
write SetPrimeiraClasse;
end;
TMinhaSegundaClasse = class(TminhaClasse)
private
FSegundaClasse: STring;
procedure SetSegundaClasse(const Value: STring);
published
property SegundaClasse:STring read FSegundaClasse
write SetSegundaClasse;
end;
TfrmCriarClasseString = class(TForm)
btClasse: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure btClasseClick(Sender: TObject);
private
{ Private declarations }
procedure InstanceClasse(AClassName: String);
public
{ Public declarations }
end;
var
frmCriarClasseString: TfrmCriarClasseString;
implementation
{$R *.dfm}
procedure TfrmCriarClasseString.btClasseClick(Sender: TObject);
begin
InstanceClasse(Edit1.Text);
end;
procedure TfrmCriarClasseString.InstanceClasse
(AClassName: String);
var
lObj: TMinhaSegundaClasse;
Pers: TPersistentClass;
begin
Pers := GetClass(AClassName);
lObj := (Pers.Create) as TMinhaSegundaClasse;
if Assigned(lObj) then
try
lObj.FPrimeiraClasse := 'Propriedade da Classe ancestral';
lObj.FSegundaClasse := 'Propriedade da Segunda Classe';
Edit2.Text :=lObj.FPrimeiraClasse;
Edit3.Text :=lObj.FSegundaClasse;
finally
lObj.Free;
end
end;
{ TminhaClasse }
procedure TminhaClasse.SetPrimeiraClasse(const Value: String);
begin
FPrimeiraClasse := Value;
end;
{ TMinhaSegundaClasse }
procedure TMinhaSegundaClasse.SetSegundaClasse(const
Value: STring);
begin
FSegundaClasse := Value;
end;
initialization
RegisterClasses([TminhaClasse, TMinhaSegundaClasse]);
end.
Link para os arquivos:
UCriarClasseString.pas
UCriarClasseString.dfm
O novo driver dbExpress para FireBird dá acesso ao banco através do DataExplorer, VCL e do Framework dbExpress
As versões de Delphi que são infectadas são Delphi 4-7.
O que o vírus faz:
Ele substitui o arquivo SysConst.dcu renomeando este para SysConst.bak, assim toda vez que um sistema é compilado ele passa a estar contaminado e a propagar o vírus.
O que você deve fazer!
Utilize um programa de pesquisa (um que seja melhor que a pesquisa do windows, agent Ransak por exemplo ) e procure por "CreateFile (pchar (d + $ $ DCU), 256,0,0,3,0, 0 );". Se você encontrar o arquivo SysConst.bak, significa que o vírus o atacou. Tudo que vc tem que fazer é apagar de SysConst.dcu atual e renomear o arquivo que foi movido para SysConst.bak novamente como SysConst.dcu.
Pronto isso deve resolver seu problema!
Fonte:
Fórum Baboo
abraços!!








