procedure TusuarioN.Button1Click(Sender: TObject);
var
aux, abc:string;
i: integer;
correcto: boolean;
begin
//el usuario solo puede tener letras y/o numeros
abc:='1234567890qwertyuiopasdfghjklzxcvbnm'+'QWERTYUIOPASDFGHJKLZXCVBNM';
aux:=edit1.Text;
correcto:=true;
for i := 1 to Length(aux) do
begin
if AnsiPos(aux[i],abc)=0 then
begin
correcto:=false;
end;
end;
if correcto=false then
begin
ShowMessage('Usuario solo puede contener letras y/o numeros');
exit;
end;
(...)
viernes, 7 de febrero de 2020
lunes, 24 de septiembre de 2018
delphi evitar que mi aplicacion se abra 2 veces en el mismo pc
procedure TForm1.FormCreate(Sender: TObject);
begin
//***** evita que se abra 2 veces el programa
CreateMutex(nil, False, 'MyAppId');
if GetLastError <> 0 then Halt;
end;
.
martes, 17 de julio de 2018
encriptar y desencriptar
uses Math
function encriptar(dato:string):string;
function desencriptar(dato:string):string;
//*********************************************
function TclientesN.encriptar(dato:string):string;
var
myNum : Byte;
i: integer;
tam: integer;
aux:string;
begin
tam:=Length(dato);
for i:=1 to Length(dato) do
begin
myNum := Ord(dato[i]);
myNum:=myNum + 1;
dato[i]:=Chr(myNum);
aux:=aux+Chr(myNum)+ Chr(RandomRange(65,90))+ Chr(RandomRange(97,122));
end;
result:=aux;
end;
//*********************************************
function TclientesN.desencriptar(dato:string):string;
var
myNum : Byte;
i,j: integer;
tam: integer;
aux:string;
begin
tam:=(Length(dato) div 3);
j:=0;
for i:=1 to Length(dato) do
begin
j:=j+1;
if j=1 then
begin
myNum := Ord(dato[i]);
myNum:=myNum - 1;
dato[i]:=Chr(myNum);
aux:=aux+Chr(myNum);
end;
if j=3 then
begin
j:=0;
end;
end;
result:=aux;
end;
function encriptar(dato:string):string;
function desencriptar(dato:string):string;
//*********************************************
function TclientesN.encriptar(dato:string):string;
var
myNum : Byte;
i: integer;
tam: integer;
aux:string;
begin
tam:=Length(dato);
for i:=1 to Length(dato) do
begin
myNum := Ord(dato[i]);
myNum:=myNum + 1;
dato[i]:=Chr(myNum);
aux:=aux+Chr(myNum)+ Chr(RandomRange(65,90))+ Chr(RandomRange(97,122));
end;
result:=aux;
end;
//*********************************************
function TclientesN.desencriptar(dato:string):string;
var
myNum : Byte;
i,j: integer;
tam: integer;
aux:string;
begin
tam:=(Length(dato) div 3);
j:=0;
for i:=1 to Length(dato) do
begin
j:=j+1;
if j=1 then
begin
myNum := Ord(dato[i]);
myNum:=myNum - 1;
dato[i]:=Chr(myNum);
aux:=aux+Chr(myNum);
end;
if j=3 then
begin
j:=0;
end;
end;
result:=aux;
end;
sábado, 3 de junio de 2017
Delphi Hilos de ejecución ejemplo
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;
type
TForm1 = class(TForm)
BtnConHilo: TButton;
ProgressBar1: TProgressBar;
BtnSinHilo: TButton;
procedure BtnConHiloClick(Sender: TObject);
procedure BtnSinHiloClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses unit2;
{$R *.dfm}
//****************************************************************
procedure TForm1.BtnConHiloClick(Sender: TObject);
var
hilo: TProgreso;
begin
hilo:= TProgreso.Create(true);
hilo.FreeOnTerminate:=true;
hilo.Resume;
end;
//****************************************************************
procedure TForm1.BtnSinHiloClick(Sender: TObject);
begin
ProgressBar1.Position:=0;
repeat
sleep(1000);
ProgressBar1.Position:=ProgressBar1.Position +1;
until
ProgressBar1.Position = ProgressBar1.Max;
end;
end.
################################
unit2.pas
################################
unit Unit2;
interface
uses
Classes, windows, unit1;
type
TProgreso = class (TThread)
protected
procedure Execute; override;
end;
implementation
//****************************************************************
procedure TProgreso.Execute;
begin
inherited;
with form1 do
begin
ProgressBar1.Position:=0;
repeat
sleep(1000);
ProgressBar1.Position:=ProgressBar1.Position +1;
until
ProgressBar1.Position = ProgressBar1.Max;
end;
end;
end.
.
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;
type
TForm1 = class(TForm)
BtnConHilo: TButton;
ProgressBar1: TProgressBar;
BtnSinHilo: TButton;
procedure BtnConHiloClick(Sender: TObject);
procedure BtnSinHiloClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses unit2;
{$R *.dfm}
//****************************************************************
procedure TForm1.BtnConHiloClick(Sender: TObject);
var
hilo: TProgreso;
begin
hilo:= TProgreso.Create(true);
hilo.FreeOnTerminate:=true;
hilo.Resume;
end;
//****************************************************************
procedure TForm1.BtnSinHiloClick(Sender: TObject);
begin
ProgressBar1.Position:=0;
repeat
sleep(1000);
ProgressBar1.Position:=ProgressBar1.Position +1;
until
ProgressBar1.Position = ProgressBar1.Max;
end;
end.
################################
unit2.pas
################################
unit Unit2;
interface
uses
Classes, windows, unit1;
type
TProgreso = class (TThread)
protected
procedure Execute; override;
end;
implementation
//****************************************************************
procedure TProgreso.Execute;
begin
inherited;
with form1 do
begin
ProgressBar1.Position:=0;
repeat
sleep(1000);
ProgressBar1.Position:=ProgressBar1.Position +1;
until
ProgressBar1.Position = ProgressBar1.Max;
end;
end;
end.
.
domingo, 8 de enero de 2017
delphi saber el dia de la semana
uses DateUtils
(...)
var
diaSemana: integer;
begin
diaSemana:=DayOfWeek(now);
showmessage(inttostr(diaSemana));
(...)
.
(...)
var
diaSemana: integer;
begin
diaSemana:=DayOfWeek(now);
showmessage(inttostr(diaSemana));
(...)
.
viernes, 7 de octubre de 2016
configurar Rave Report delphi informes
componente RvProject1
---------------------------
parametro Engine -> RvSystem1
parametro ProjectFile -> C:\bases\prueba.rav
componente RvSystem1
---------------------------
DefaultDest -> rdPrinter
SystemPrinter -> Copies -> 1 // numero de copias
SystemPrinter -> Title -> Titulo de la impresion
SystemSetups -> ssAllowSetup -> false // para imprimir directamente
componente RvNDRWriter1
---------------------------
uses (...), inifiles;
(...)
procedure TForm1.Button1Click(Sender: TObject);
var
ini: TIniFile;
nombreImpresora: string;
begin
ini := TIniFile.Create('./parametros.ini');
nombreImpresora:=ini.ReadString('parametros', 'impresora', '');
ini.Free;
if nombreImpresora='' then
begin ShowMessage('Error al leer el fichero PARAMETROS.INI');
exit;
end;
RvProject1.Open;
if RvNDRWriter1.SelectPrinter(nombreImpresora)=false then
begin
ShowMessage('No exite impresora');
end
else
begin
RvProject1.Execute;
RvProject1.Close;
end;
end;
.
---------------------------
parametro Engine -> RvSystem1
parametro ProjectFile -> C:\bases\prueba.rav
componente RvSystem1
---------------------------
DefaultDest -> rdPrinter
SystemPrinter -> Copies -> 1 // numero de copias
SystemPrinter -> Title -> Titulo de la impresion
SystemSetups -> ssAllowSetup -> false // para imprimir directamente
componente RvNDRWriter1
---------------------------
uses (...), inifiles;
(...)
procedure TForm1.Button1Click(Sender: TObject);
var
ini: TIniFile;
nombreImpresora: string;
begin
ini := TIniFile.Create('./parametros.ini');
nombreImpresora:=ini.ReadString('parametros', 'impresora', '');
ini.Free;
if nombreImpresora='' then
begin ShowMessage('Error al leer el fichero PARAMETROS.INI');
exit;
end;
RvProject1.Open;
if RvNDRWriter1.SelectPrinter(nombreImpresora)=false then
begin
ShowMessage('No exite impresora');
end
else
begin
RvProject1.Execute;
RvProject1.Close;
end;
end;
.
viernes, 16 de septiembre de 2016
delphi cambiar el order del tab de los componentes tabulador
Botón derecho en el formulario -> Tab Order
.
jueves, 8 de septiembre de 2016
ficheros ini fichero archivo archivos
uses inifiles;
//********************************************
procedure Tinicio.FormCreate(Sender: TObject);
var
ini: TIniFile;
(...)
ini := TIniFile.Create('./parametros.ini');
aux:=ini.ReadString('parametros', 'avisoanyonuevo', 'si');
ini.Free;
(...)
ini := TIniFile.Create('./parametros.ini');
ini.WriteString('parametros', 'avisoanyonuevo', 'si');
ini.Free;
.
//********************************************
procedure Tinicio.FormCreate(Sender: TObject);
var
ini: TIniFile;
(...)
ini := TIniFile.Create('./parametros.ini');
aux:=ini.ReadString('parametros', 'avisoanyonuevo', 'si');
ini.Free;
(...)
ini := TIniFile.Create('./parametros.ini');
ini.WriteString('parametros', 'avisoanyonuevo', 'si');
ini.Free;
.
domingo, 27 de marzo de 2016
cambio horario saber dia de la semana saber numero del mes
uses DateUtils;
(...)
//******************************************
procedure TForm1.Button1Click(Sender: TObject);
var
diadelasemana: integer;
numerodemes: integer;
begin
diadelasemana:=DayOfWeek(now);
numerodemes:=MonthOfTheYear(now);
if ((diadelasemana=1)) then
begin
ShowMessage('domingo: ' + inttostr(numerodemes));
end;
end;
.
martes, 15 de marzo de 2016
maximo valor de int maximo entero
var
min, max : integer;
begin
// Set the minimum and maximum values of this data type
min := Low(integer);
max := High(integer);
ShowMessage('Min integer value = '+IntToStr(min));
ShowMessage('Max integer value = '+IntToStr(max));
end;
min, max : integer;
begin
// Set the minimum and maximum values of this data type
min := Low(integer);
max := High(integer);
ShowMessage('Min integer value = '+IntToStr(min));
ShowMessage('Max integer value = '+IntToStr(max));
end;
viernes, 11 de marzo de 2016
delphi tamaño de un fichero tamaño de un archivo
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
function tamanioA(nom:String):integer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//********************************************
function TForm1.tamanioA(nom:String):integer;
var
FHandle: integer;
begin
FHandle := FileOpen(nom, 0);
try
Result := (getfilesize(FHandle,nil));
finally
FileClose(FHandle);
end;
end;
//***********************************************
procedure TForm1.Button1Click(Sender: TObject);
var
aux: string;
i: integer;
begin
aux:='c:\sella5.pdf';
i:=((tamanioA(aux) div 1024) div 1024);
ShowMessage(aux + ' --> ' +inttostr(i) + ' Mb');
end;
end.
.
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
function tamanioA(nom:String):integer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//********************************************
function TForm1.tamanioA(nom:String):integer;
var
FHandle: integer;
begin
FHandle := FileOpen(nom, 0);
try
Result := (getfilesize(FHandle,nil));
finally
FileClose(FHandle);
end;
end;
//***********************************************
procedure TForm1.Button1Click(Sender: TObject);
var
aux: string;
i: integer;
begin
aux:='c:\sella5.pdf';
i:=((tamanioA(aux) div 1024) div 1024);
ShowMessage(aux + ' --> ' +inttostr(i) + ' Mb');
end;
end.
.
martes, 8 de marzo de 2016
showmessage salto de linea intros
ShowMessage('TU VIDA'+ #13#10 + 'SERA' + #13#10 +
'UNA CANCION');
.
'UNA CANCION');
.
martes, 23 de febrero de 2016
adoquery saber si es null
//************************************************************************
procedure TForm1.Button1Click(Sender: TObject);
var
SQLQuery, aux: string;
begin
ADOQuery1.Active := false;
ADOQuery1.SQL.Clear;
SQLQuery:='select * from borrar limit 1';
ADOQuery1.SQL.Add(SQLQuery);
ADOQuery1.Active := true;
if ADOQuery1.RecordCount > 0 then
begin
if ADOQuery1.FieldByName('nombre').IsNull then
begin
ShowMessage('nombre es null');
end
else
begin
aux:=ADOQuery1.FieldByName('nombre').AsString;
ShowMessage(aux);
end;
end;
ADOQuery1.Active := false;
end;
.
procedure TForm1.Button1Click(Sender: TObject);
var
SQLQuery, aux: string;
begin
ADOQuery1.Active := false;
ADOQuery1.SQL.Clear;
SQLQuery:='select * from borrar limit 1';
ADOQuery1.SQL.Add(SQLQuery);
ADOQuery1.Active := true;
if ADOQuery1.RecordCount > 0 then
begin
if ADOQuery1.FieldByName('nombre').IsNull then
begin
ShowMessage('nombre es null');
end
else
begin
aux:=ADOQuery1.FieldByName('nombre').AsString;
ShowMessage(aux);
end;
end;
ADOQuery1.Active := false;
end;
.
domingo, 14 de febrero de 2016
Crear un informe con RAVE v2
Tienes que añadir un control de la clase RvSystem y enlazar la propiedad engine del RvProject con el.
La Clase RVSystem tiene una propiedad SystemSetups donde puedes configurar las opciones de destinos (Impresora, preview, file..) si solo dejas opciones de impresión y ssAllowsetup a false, la impresión sale directa.
Si solo dejas opciones de Preview te saldra directamente la pantalla de previsualización y podras imprimir desde ella.
Saludos.
La Clase RVSystem tiene una propiedad SystemSetups donde puedes configurar las opciones de destinos (Impresora, preview, file..) si solo dejas opciones de impresión y ssAllowsetup a false, la impresión sale directa.
Si solo dejas opciones de Preview te saldra directamente la pantalla de previsualización y podras imprimir desde ella.
Saludos.
viernes, 15 de enero de 2016
delphi copia portapapeles
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Memo1: TMemo;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
anterior: string;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
fic: textfile;
nuevo: boolean;
begin
timer1.Enabled:=false;
nuevo:=false;
if memo1.Text='' then
begin
memo1.Clear;
memo1.PasteFromClipboard;
anterior:=memo1.Text;
nuevo:=true;
end
else
begin
memo1.Clear;
memo1.PasteFromClipboard;
if anterior<>memo1.Text then
begin
anterior:=memo1.Text;
nuevo:=true;
end;
end;
if nuevo=true then
begin
AssignFile (fic,'fondo.txt');
if FileExists('fondo.txt')=false then
begin
ReWrite(fic);
end
else
begin
Append(fic);
end;
Append(fic);
writeln(fic,memo1.Text);
CloseFile (fic);
end;
timer1.Enabled:=true;
end;
end.
.
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Memo1: TMemo;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
anterior: string;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
fic: textfile;
nuevo: boolean;
begin
timer1.Enabled:=false;
nuevo:=false;
if memo1.Text='' then
begin
memo1.Clear;
memo1.PasteFromClipboard;
anterior:=memo1.Text;
nuevo:=true;
end
else
begin
memo1.Clear;
memo1.PasteFromClipboard;
if anterior<>memo1.Text then
begin
anterior:=memo1.Text;
nuevo:=true;
end;
end;
if nuevo=true then
begin
AssignFile (fic,'fondo.txt');
if FileExists('fondo.txt')=false then
begin
ReWrite(fic);
end
else
begin
Append(fic);
end;
Append(fic);
writeln(fic,memo1.Text);
CloseFile (fic);
end;
timer1.Enabled:=true;
end;
end.
.
miércoles, 25 de noviembre de 2015
fechas delphi dia mes año
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, DateUtils;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
diadelasemana: integer;
wAnyo, wMes, wDia: Word;
begin
DecodeDate( now(), wAnyo, wMes, wDia );
diadelasemana:=DayOfWeek(now);
// if ((diadelasemana=7) or (diadelasemana=1)) then
ShowMessage(datetostr(EndOfTheMonth(now())));
if (wMes=10) then
begin
if (wDia>=25) then
begin
ShowMessage(inttostr(wDia));
ShowMessage(inttostr(wMes));
ShowMessage(inttostr(wAnyo));
end;
end;
end;
end.
//*********
procedure TForm1.Button1Click(Sender: TObject);
var
wHor, wMin, wSeg, wMSeg, wAnyo, wMes, wDia: Word;
begin
DecodeDate( now(), wAnyo, wMes, wDia );
DecodeTime( now(), wHor, wMin, wSeg, wMSeg);
ShowMessage(inttostr(wHor)+inttostr(wMin)+inttostr(wSeg)+inttostr(wMSeg));
end;
.
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, DateUtils;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
diadelasemana: integer;
wAnyo, wMes, wDia: Word;
begin
DecodeDate( now(), wAnyo, wMes, wDia );
diadelasemana:=DayOfWeek(now);
// if ((diadelasemana=7) or (diadelasemana=1)) then
ShowMessage(datetostr(EndOfTheMonth(now())));
if (wMes=10) then
begin
if (wDia>=25) then
begin
ShowMessage(inttostr(wDia));
ShowMessage(inttostr(wMes));
ShowMessage(inttostr(wAnyo));
end;
end;
end;
end.
//*********
procedure TForm1.Button1Click(Sender: TObject);
var
wHor, wMin, wSeg, wMSeg, wAnyo, wMes, wDia: Word;
begin
DecodeDate( now(), wAnyo, wMes, wDia );
DecodeTime( now(), wHor, wMin, wSeg, wMSeg);
ShowMessage(inttostr(wHor)+inttostr(wMin)+inttostr(wSeg)+inttostr(wMSeg));
end;
.
martes, 24 de noviembre de 2015
saber si esta dentro de una zona GPS
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, strutils;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
rectas: array[1..4] of string;
puntosX: array[1..4] of integer;
puntosY: array[1..4] of integer;
implementation
{$R *.dfm}
//********************************************************
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
pX, pY: real;
desde, hasta: integer;
puntoOrdenado1, puntoOrdenado2: real;
denominador1, denominador2: real;
numerador, total: real;
corta: integer;
begin
pX:=4;
pY:=38.5596881;
corta:=0; // las veces que corta por arriba un punto dado
desde:=1; // los segmentos de la zona el primero
hasta:=4; // los segmentos de la zona el ultimo (en este ej.)
//***
for i := desde to hasta do
begin
if i<>4 then
begin
puntoOrdenado1:=puntosX[i];
puntoOrdenado2:=puntosX[i+1];
if (puntoOrdenado1>puntosX[i+1]) then
begin
puntoOrdenado1:=puntosX[i+1];
puntoOrdenado2:=puntosX[i];
end;
if ((puntoOrdenado1<=pX) and (puntoOrdenado2>=pX)) then
begin
// ecuaciones de la recta ((X - Xa) / (Xb - Xa)) = ((Y - Ya) / (Yb - Ya))
numerador:=pX - puntosX[i+1];
denominador1:= puntosX[i+1] - puntosX[i];
denominador2:= puntosY[i+1] - puntosY[i];
total:= (numerador * denominador2 / denominador1) + puntosY[i+1];
if total >= pY then
begin
corta:=corta+1;
end;
//showmessage(floattostr(total));
end;
end
else
begin
puntoOrdenado1:=puntosX[desde];
puntoOrdenado2:=puntosX[hasta];
if (puntoOrdenado1>puntosX[hasta]) then
begin
puntoOrdenado1:=puntosX[hasta];
puntoOrdenado2:=puntosX[desde];
end;
if ((puntoOrdenado1<=pX) and (puntoOrdenado2>=pX)) then
begin
numerador:=pX - puntosX[hasta];
denominador1:= puntosX[hasta] - puntosX[desde];
denominador2:= puntosY[hasta] - puntosY[desde];
total:= (numerador * denominador2 / denominador1) + puntosY[hasta];
if total >= pY then
begin
corta:=corta+1;
end;
//showmessage(floattostr(total));
end;
end;
end;
// ShowMessage(inttostr(corta));
if (corta mod 2 <> 0) then
begin
ShowMessage('Dentro');
end
else
begin
ShowMessage('Fuera');
end;
// ShowMessage(floattostr(corta mod 2));
end;
//********************************************************
procedure TForm1.FormCreate(Sender: TObject);
begin
// vertices de la zona (-5,3) (6,9) (3,5) (9,-3)
puntosX[1]:=-5;
puntosX[2]:=6;
puntosX[3]:=3;
puntosX[4]:=9;
puntosY[1]:=3;
puntosY[2]:=9;
puntosY[3]:=5;
puntosY[4]:=-3;
end;
end.
http://es.onlinemschool.com/math/assistance/cartesian_coordinate/p_to_line/
http://fooplot.com
.
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, strutils;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
rectas: array[1..4] of string;
puntosX: array[1..4] of integer;
puntosY: array[1..4] of integer;
implementation
{$R *.dfm}
//********************************************************
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
pX, pY: real;
desde, hasta: integer;
puntoOrdenado1, puntoOrdenado2: real;
denominador1, denominador2: real;
numerador, total: real;
corta: integer;
begin
pX:=4;
pY:=38.5596881;
corta:=0; // las veces que corta por arriba un punto dado
desde:=1; // los segmentos de la zona el primero
hasta:=4; // los segmentos de la zona el ultimo (en este ej.)
//***
for i := desde to hasta do
begin
if i<>4 then
begin
puntoOrdenado1:=puntosX[i];
puntoOrdenado2:=puntosX[i+1];
if (puntoOrdenado1>puntosX[i+1]) then
begin
puntoOrdenado1:=puntosX[i+1];
puntoOrdenado2:=puntosX[i];
end;
if ((puntoOrdenado1<=pX) and (puntoOrdenado2>=pX)) then
begin
// ecuaciones de la recta ((X - Xa) / (Xb - Xa)) = ((Y - Ya) / (Yb - Ya))
numerador:=pX - puntosX[i+1];
denominador1:= puntosX[i+1] - puntosX[i];
denominador2:= puntosY[i+1] - puntosY[i];
total:= (numerador * denominador2 / denominador1) + puntosY[i+1];
if total >= pY then
begin
corta:=corta+1;
end;
//showmessage(floattostr(total));
end;
end
else
begin
puntoOrdenado1:=puntosX[desde];
puntoOrdenado2:=puntosX[hasta];
if (puntoOrdenado1>puntosX[hasta]) then
begin
puntoOrdenado1:=puntosX[hasta];
puntoOrdenado2:=puntosX[desde];
end;
if ((puntoOrdenado1<=pX) and (puntoOrdenado2>=pX)) then
begin
numerador:=pX - puntosX[hasta];
denominador1:= puntosX[hasta] - puntosX[desde];
denominador2:= puntosY[hasta] - puntosY[desde];
total:= (numerador * denominador2 / denominador1) + puntosY[hasta];
if total >= pY then
begin
corta:=corta+1;
end;
//showmessage(floattostr(total));
end;
end;
end;
// ShowMessage(inttostr(corta));
if (corta mod 2 <> 0) then
begin
ShowMessage('Dentro');
end
else
begin
ShowMessage('Fuera');
end;
// ShowMessage(floattostr(corta mod 2));
end;
//********************************************************
procedure TForm1.FormCreate(Sender: TObject);
begin
// vertices de la zona (-5,3) (6,9) (3,5) (9,-3)
puntosX[1]:=-5;
puntosX[2]:=6;
puntosX[3]:=3;
puntosX[4]:=9;
puntosY[1]:=3;
puntosY[2]:=9;
puntosY[3]:=5;
puntosY[4]:=-3;
end;
end.
http://es.onlinemschool.com/math/assistance/cartesian_coordinate/p_to_line/
http://fooplot.com
.
unir variable concatenar variable
cont:=listagrupos.Items.Count; // lineas de un lisbox
for i:=0 to listbox1.Items.Count-1 do
begin
if(listbox1.Selected[i]) then
begin
showmessage(inttostr(i));
end;
end;
sincronizar 4 listbox
/******************
procedure TForm1.ListBox1Click(Sender: TObject);
var
n:byte;
begin
for n:=2 to 4 do
begin
(FindComponent('ListBox'+IntToStr(n))as TListBox).ItemIndex:=
(Sender as TListBox).ItemIndex;
end;
end;
/****************
sincronizar 2 listbox
/******************
procedure TForm1.ListBox1Click(Sender: TObject);
var
n:byte;
begin
for n:=1 to 2 do
begin
(FindComponent('ListBox'+IntToStr(n))as TListBox).ItemIndex:=
(Sender as TListBox).ItemIndex;
end;
end;
/****************
for i:=0 to listbox1.Items.Count-1 do
begin
if(listbox1.Selected[i]) then
begin
showmessage(inttostr(i));
end;
end;
sincronizar 4 listbox
/******************
procedure TForm1.ListBox1Click(Sender: TObject);
var
n:byte;
begin
for n:=2 to 4 do
begin
(FindComponent('ListBox'+IntToStr(n))as TListBox).ItemIndex:=
(Sender as TListBox).ItemIndex;
end;
end;
/****************
sincronizar 2 listbox
/******************
procedure TForm1.ListBox1Click(Sender: TObject);
var
n:byte;
begin
for n:=1 to 2 do
begin
(FindComponent('ListBox'+IntToStr(n))as TListBox).ItemIndex:=
(Sender as TListBox).ItemIndex;
end;
end;
/****************
miércoles, 3 de junio de 2015
base de datos select adoquery dinamico
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB;
type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//*************************************************
// aqui usa un componente ADOQUERY arrastrandolo
procedure TForm1.Button1Click(Sender: TObject);
var
SQLQuery: string;
begin
ADOQuery1.Active := false;
ADOQuery1.SQL.Clear;
SQLQuery:='select id from localizadores limit 10';
ADOQuery1.SQL.Add(SQLQuery);
ADOQuery1.Active := true;
if ADOQuery1.RecordCount > 0 then
begin
showmessage('ok');
end;
ADOQuery1.Active := false;
end;
//*************************************************
// aqui crea un componente ADOQUERY dinamicamente
procedure TForm1.Button2Click(Sender: TObject);
var
ADOQuery2: TADOQuery;
SQLQuery: string;
i: integer;
begin
ADOQuery2:= TADOQuery.Create(Self);
ADOQuery2.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=elpauGPS';
ADOQuery2.Active := false;
ADOQuery2.SQL.Clear;
SQLQuery:='select id from localizadores limit 10';
ADOQuery2.SQL.Add(SQLQuery);
ADOQuery2.Active := true;
ShowMessage(inttostr(ADOQuery2.RecordCount));
ADOQuery2.Active := false;
ADOQuery2.Destroy;
end;
end.
// fin
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB;
type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//*************************************************
// aqui usa un componente ADOQUERY arrastrandolo
procedure TForm1.Button1Click(Sender: TObject);
var
SQLQuery: string;
begin
ADOQuery1.Active := false;
ADOQuery1.SQL.Clear;
SQLQuery:='select id from localizadores limit 10';
ADOQuery1.SQL.Add(SQLQuery);
ADOQuery1.Active := true;
if ADOQuery1.RecordCount > 0 then
begin
showmessage('ok');
end;
ADOQuery1.Active := false;
end;
//*************************************************
// aqui crea un componente ADOQUERY dinamicamente
procedure TForm1.Button2Click(Sender: TObject);
var
ADOQuery2: TADOQuery;
SQLQuery: string;
i: integer;
begin
ADOQuery2:= TADOQuery.Create(Self);
ADOQuery2.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=elpauGPS';
ADOQuery2.Active := false;
ADOQuery2.SQL.Clear;
SQLQuery:='select id from localizadores limit 10';
ADOQuery2.SQL.Add(SQLQuery);
ADOQuery2.Active := true;
ShowMessage(inttostr(ADOQuery2.RecordCount));
ADOQuery2.Active := false;
ADOQuery2.Destroy;
end;
end.
// fin
viernes, 29 de mayo de 2015
coger la hora de internet
IdSNTP1.Host := 'time.windows.com';
label1.Caption := 'Fecha y hora: '+Datetimetostr(IdSNTP1.DateTime);
label1.Caption := 'Fecha y hora: '+Datetimetostr(IdSNTP1.DateTime);
Suscribirse a:
Entradas (Atom)