PREGUNTAS CONTESTADAS - Delphi≤nguaje=

 Hay un total de 680 Preguntas.<<  >> 

    Pregunta:  17845 - MANEJAR PUERTOS CON DELPHI
Autor:  Fredy Alexander Ballesteros Arevalo
Compañeros tengo inconvenientes para manejar los puertos con delphi
necesito algo de ayuda para adquisicion de datos por puerto paralelo o serial en realidad estaria muy agradecido ya que es para mi proyecto de grado.
  Respuesta:  Omar Pérez Durán
Existe para el manejo del puerto serie (y me supongo que para el paralelo tambien) unos componentes. Estos los puedes adquirir en la dirección de DELPHI SUPER PAGE http://delphi.icm.edu.pl/

    Pregunta:  17934 - OSCILOGRAMAS
Autor:  Víctor Viegas
Trato de hacer un programa que grafique el sonido a modo de osciloscopio, ¿alguien tiene idea de cómo leer la salida de parlantes de una place de sonido?.

Desde ya, muchas gracias.
  Respuesta:  Julio Cesar --
Si, las MMTools son lo que necesitas, puedes bajar ejemplos de http://www.swiftsoft.de/downloads.html y luego le hechas un ojo a http://www.lawebdelprogramador.com/codigo/enlace.php?idp=1232&id=93&texto=Visual+Basic está en VB6 pero en la página de ejemplos hay para otros lenguajes.

Saludos
  Respuesta:  fenixariel
Tendrias que hacerlo en 2 etapas, primero adquirir los datos del puerto, para esta primera parte puedes usar por ejemplo un componente que encuentras en internet: SerialNG. la segunda parte la de la visualizacion de los datos(graficamente) , manipulacion y analisis de los datos puedes usar la libreria de componetes de SignalLab(mitov.com)
  Respuesta:  Antonio Esteban Soria
Existen unas utilidades que te podrán ayudar mucho en lo que quieres hacer: MMTOOLS (Multimedia TOOLS). Estas utilidades son de origen alemán y no tienen una documentación muy buena, sin embargo traen un ejemplo con lo que tu quieres hacer.

En definitiva para mostrar la onda de audio de un archivo, lo primero que tienes que hacer es determinar el formato con el que está grabado el archivo (PCM o MPEG, MONO o STEREO, ETC.). En función del formato de grabación la tamaño de cada muestra de audio varía.

Una vez que sepas el tamaño de la trama lo único que tienes que hacer es leer trama a trama y mover los valores leidos al control OSCOPE.

Espero que te sirva de ayuda.

    Pregunta:  18064 - COMO CREAR íNDICES CON FILTRO EN RUNTIME ?
Autor:  fernando Reyes B.
Los índices de bases de datos XBASE, y supongo que otros formatos también, permiten crear índices con una llave compuesta, es decir FIELD1+str(FIELD2)+dtos(FIELD3)+...+FIELDN, y además permiten agregar un criterio de selección de registros (FILTRO), con lo cual el índice sólo contiene referencias a los registros que cumplen con el criterio determinado. Mediante el Database Desktop se pueden crear estos índices perfecta y confiablemente, pero aún no he podido encontrar información de cómo crearlos en tiempo de ejecución, el SQL sólo permite crearlos sin filtro y sin llaves compuestas, entonces:
Como crear índices con llave compuesta y con filtro en tiempo de ejecución, es decir desde el mismo programa que utiliza las tablas ?
De antemano muchas gracias compañeros...
  Respuesta:  mamcx m
Mala suerte. Delphi no es FOX ni DBASE. A diferencia de tu idea, la mayoria de bases de datos NO permiten usar funciones en la definición de los indices (ni Sql Server, Acces, Paradox, etc...) Esto es una caracteristica que creo unica en las tablas fox. Esto quiere decir que Delphi no pude implementar funciones especificas de ninguna Base de datos. Sin embargo, podrias crear un servidor en VFP para hacer eso, e invocarlo desde Delphi, o ejecutar desde Delphi un programa creado en VFP, Foxpro o algun dbase para ello...

    Pregunta:  18122 - DATOS DEL LECTOR DE CóDIGO DE BARRAS AL ELEMENTO ACTIVO
Autor:  Omar Pérez Durán
Hice un programa que lee Códigos de Barras desde un Puerto RS-232 y envía los datos hacia un elemento TEdit.

Mi pregunta es: ¿Cómo puedo hacer que envíe los datos hacia el elemento que está activo? Tengo varias ventanas para introducir los datos.

Utilizo Delphi 4 en Windows 98.
  Respuesta:  Sandor Andres Osorio Cano
Lo unico que le puedo decir es que tiene que investigar y hacer uso del textout este es el encargado de enviar texto a la posicion del cursor. como No lo se porque estoy en esas pero para implementacion de huellas digitales. si logro sacarlo te mando algo. pero por el momento consulta sobre como capturar el handle o hdc de la aplicacion

disculpa no pder ayudarte mas pero es lo menos que puedo hacer por el momento
  Respuesta:  Ulises Ruiz Huerta
Intente haciendo un Cast de Form.ActiveControl al tipo de objeto de tus entradas de texto y lo agregas ahi.

    Pregunta:  18201 - COMO LOGRAR QUE FUENCIONE RECORCOUNT EN UNA QUERY?
Autor:  francisco reina martinez
Esta propiedad del TQuery parece que funciona sólo cuando quiere. Suele delvolver -1 aunque el cursor tenga varios registros.
Un saludo
  Respuesta:  Angel Wong
utilizo sql server y la manera que me funciona el recordcount es indicandole en donde empieza y donde termina para que registre ese dato.

Qry.First;
Qry.Last;
VAriable:=Qry.RecordCount;
  Respuesta:  mamcx m
No es que funcione cuando quiere: No funciona. Y la razón es simple. Resulta que las bases de datos que se usan en las empresas, o sea bases de datos SQL como Oracle o Sql Server, tienen una mentalidad distinta a las de las locales, como Acces, paradox y Fox. Por lo tanto, TQuery no puede implementar correctamente RecordCount porque Sql Server y Oracle no tienen NADA que permita hacer un recordcount de forma confiable. Una alternativa es ejecutar SELECT MAX(*) FROM MiNombreTabla...

Sin embargo, hay soluciones. Si usas ADO, puedes utilizar recordset locales y el si te arroja el recordcount. O MIDAS, TClientDataSet tambien lo hace.

Ha menos que sea una aplicacion de red, usa un TTable, de lo contrario usa la aternativa del SELEC, MIDAS, ADO o otro componente que cachee los datos en el cliente

    Pregunta:  18212 - IMPRIMIR QRLABELS VERTICALES CON QREPORT
Autor:  Héctor Casals
Tengo que sacar por impresora unas plantillas para cintas de video por lo que la carátula se imprimirá normalmente pero en el lateral se tiene de imprimir de forma vertical.
  Respuesta:  Luis Felipe García Gutiérrez
No te compliques...
simplemente coloca en en el QReport un objeto QRDBText y pasas a true la propiedad WordWap (la última), luego te aseguras que en el campo de la base de datos que contenga un espacio entre cada letra... y listo!
  Respuesta:  Luis Fernandez
Ahí te mando un par de rutinas que escriben el texto inclinado. De todas formas no entiendo porque en un QuickReport tienes que imprimir el texto inclinado.Simplemente imprime normal sobre un control y una vez impreso giras el papel que es más sencillo.Es decir no tiene porque estar inclinada a la vista la etiqueta antes de imprimir si la puedes girar una vez impresa.No se si me has entendido.
=============PRIMERA========================
function CreateAngledFont(Fuente: HFont; Angulo: Longint;
Calidad: byte): HFont;
var
FontInfo: TLogFontA; // Estructura de información de la fuente
begin
// Obtener la información de la fuente pasada como parámetro
if GetObject(Fuente, SizeOf(FontInfo), @FontInfo) = 0 then begin
Result := 0;
exit;
end;
// Establecer el ángulo
FontInfo.lfEscapement := Angulo;
FontInfo.lfOrientation := Angulo;
// Establecer la calidad
FontInfo.lfQuality := Calidad;
// Crear una nueva fuente con la información modificada
// La nueva fuente deberá ser liberada llamando a DeleteObject
Result := CreateFontIndirect(FontInfo);
end;

procedure TextOutA(Lienzo: TCanvas; X, Y, Angulo: Integer;
Texto: string);
var
FuenteOriginal, FuenteInclinada: HFont;
begin
// Crea una fuente inclinada a partir de la fuente actual
FuenteInclinada := CreateAngledFont(Lienzo.Font.Handle, Angulo,PROOF_QUALITY);
if FuenteInclinada <> 0 then begin
// La establemos temporalmente como la fuente actual
FuenteOriginal := SelectObject(Lienzo.Handle, FuenteInclinada);
if FuenteOriginal <> 0 then begin
// Escribimos el texto
Lienzo.TextOut(X, Y, Texto);
// Restaura la fuente original
if SelectObject(Lienzo.Handle, FuenteOriginal) = 0 then begin
Lienzo.Font.Handle := FuenteInclinada;
// raise Exception.Create('No se pudo restaurar la fuente');
exit;
end;
end;
// Libera la fuente inclinada
DeleteObject(FuenteInclinada)
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with label1 do
begin
Font.Name := 'Arial'; // IMPORTANTE: fuente True Type
Font.Size := 14;
Font.Color:=clBlue;
//Canvas.Brush.Color := Color;
TextOutA(Canvas, 5, 230, 900, 'tocame las narices');
end;
end;

=============SEGUNDA========================
procedure TForm1.Button2Click(Sender: TObject);
procedure EscribeEnVertical(Donde:TCanvas;x,y:integer;Texto:string);
var
n : integer;
begin
for n:=1 to Length(Texto) do
begin
with Donde do
TextOut( x,
y+(TextHeight('W')*(n-1)),
Texto[n]);
end;
end;
begin
EscribeEnVertical(Image1.Canvas,10,10,'Pruebilla');
end;

    Pregunta:  18301 - ¿CóMO PUEDO HACER UN REPRODUCTOR MP3 DESDE DELPHI?
Autor:  Mauro López
Hola:
Me parece que la pregunta ya es lo suficientemente clara así que si alguien puede contestarme le voy a estar muy agradecido.
  Respuesta:  Juan Jose Ochoa
Simplemente usa un TMEDIAPLAYER y en la propiedad DEVICETYPE selecciona la de MP3 o WAV. Utiliza un TOPENDIALOG para abrir los archivos y pasarselos al TMEDIAPLAYER en la propiedad FILENAME y listo.

JJ8A - IWKÜ

    Pregunta:  18317 - LENTITUD DE ADO EN RED
Autor:  Antonio Hdez Glez
Utilizo una base de datos access con acceso mediante componentes ADO y tengo instalado el MDAC 2.5 de Microsoft, cuando lo maneja en local va bien pero cuando lo hace red va muy lento, creo que demasiado lento, y el hardware no es porque en otras aplicaciones no se nota tanta diferencia. Alguien me podria decir por que pasa esto y si hay manera de hacer el acceso más rápido, gracias.
  Respuesta:  ALberto Gomez
1.- Intenta que la tabla no tenga indices compuestos
2.- Si esto no funciona canvia la propiedadad cursor location para que no la use en el cliente sino en el servidor.

    Pregunta:  18325 - SOBRE LA COMUNICACIóN TCP/IP
Autor:  Pedro Mass
Quiero hacer un programa en Delphi para comunicaciones como si fuera un chat pero necesito saber dos cosas primero.
1- Como logro que mi programa atienda a todo aquel que se conecte a el de la manera más eficiente posible.
2- Como logro que el programa pueda comunicarse a traves de los cortafuegos que puedan encontrarse en medio.

No se como puedo hacer que usando los componentes de Delphi (tServerSocket) poder atender a todos los que se conecten a el.

En Visual Basic lo podia hacer cargando otra instancia del control con load y aceptando la demanda de conexión, pero ahora estoy aprendiendo Delphi y quiero trabajar con el.

Estoy muy agradecido de la información que me puedan dar.
  Respuesta:  Gandazgul Mirth
Hola

El objeto ServerSocket tiene una propiedad que se llama Socket y dentro de esta un arra de conecciones asi que:

ServerSocket1.Socket.Connetions[No. de coneccion]

de esta forma accedes a cada una de las conecciones, la primera es 0 la segunda 1 y asi sucesivamente si alguna se desconecta la lista se corre o sea 3 pasa a ser 2 y asi.

Espero te sirva de ayuda si tienes dudas responde tu mismo esta pregunta y perguntame la duda.

chao.
  Respuesta:  Luis Flores
Hay un ejemplo en Delphi. en el directorio bin: scktsrvr.exe

Me parece que si esta el código fuente de este programa que acepta múltiples conexiones, lo que no recuerdo es donde.
Y está la ayuda de MSDK Help File sobre los Sockets y vienen ejemplos.

También en la ayuda de Delphi viene como utilizar estos componentes.

Espero que esto te de por donde empezar.

LUIS

    Pregunta:  18409 - QUE TAREA DE WINDOW SE ESTA EJECUTANDO EN UN MOMENTO DADO
Autor:  Esther Victoria Barrio Pedraza
Como saber que tarea de window se está ejecutando en un momento determinado, como saber el momento en que empieza y cuando termina
  Respuesta:  mack ??
hola, con el codigo siguiente puedes saber que se esta ejecutando y que no, en un timer puedes controlar los tiempos de cada uno, y saber cuanto llevan..

ahojala te sirva !!!

procedure TForm1.Button1Click(Sender: TObject);

function SacaExe(MangoW:HWND):string;
{Obtiene el EXE de una tarea}
{get EXE of a task}
var
Datos :TProcessEntry32;
hID : DWord;
Snap : Integer;
begin
GetWindowThreadProcessId(MangoW,@hID);
Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
try
Datos.dwSize:=SizeOf(Datos);
if(Process32First(Snap,Datos))then
begin
repeat
if Datos.th32ProcessID=hID then
begin
Result:=StrPas(Datos.szExeFile);
Break;
end;
until not(Process32Next(Snap,Datos));
end;
finally
Windows.CloseHandle(Snap);
end;
end;

function ObtieneVentanas(Mango: HWND;
Nada: Pointer): Boolean; stdcall;
var
sTemp:string;
begin
Result := True;
{Mango es el handle de la tarea encontrada}
{Añadimos el .EXE si no está ya añadido...}
sTemp:=SacaExe(Mango);
with Form1.ListBox1.Items do
if IndexOf(sTemp) = - 1 then Add(sTemp);
end;

begin
EnumWindows( @ObtieneVentanas, 0 );
end;

|<  <<  31 32 33 34 35 36 37 38 39 40 41  >>  >|