Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Funcion callback o (https://www.clubdelphi.com/foros/showthread.php?t=74275)

julyus 03-06-2011 23:05:49

error
 
Código Delphi [-]
type
  TextFile = ^Text; esto lo encontre en internet y slucionaba el error
  cbkParmsCrystal = procedure(var posStoredProcs, posCrystalProcs: integer
    ; titulo: string) of object;
  cbkConfigFile = function(var f: TextFile; var st: string): integer of object;

compilo y encuentro esto es incompatible tipes en F si es de tipo text

Código Delphi [-]
function leaLinea(var f: TextFile; var texto: string): boolean;
var
  comentario: boolean;
begin
  repeat
    if eof(F) then
    begin
      texto := KS_FIN_DE_ARCHIVO;
      comentario := false;
    end
    else
    begin
      readln(F, texto);
      comentario := (trim(texto) = '') or (copy(trim(texto), 1, 2) = '::');
    end;
  until not comentario;
  texto := StringReplace(texto, #9, '     ', [rfReplaceAll]);
  texto := trim(texto);
  result := copy(texto, 1, 1) = '[';
end;

o me agradaria saber TextFile por que lo puedo cambiar
en una funcion antes me salia internal error TI894 que sucedia dento de una funcion del ripo que estoy creando ?? alguien le ha pasado esto ???:(:(:(:(

Casimiro Notevi 04-06-2011 00:07:22

Hola, julyus, ya llevas un montón de mensajes para que no sigas nuestras normas, recuerda leerlas, gracias :)

escafandra 04-06-2011 00:14:07

En verdad que no entiendo lo que quieres decir.

Saludos.

oscarac 04-06-2011 00:22:28

yo creo que si divides Viernes entre mil te sale 36 :eek::eek:

leofuentes21 04-06-2011 00:45:30

Hola amigo yo soy un poco nuevo pero te aconsejo como dijo Casimiro que leas la guia de estilo para que puedas ser mas explicito en tus preguntas y te puedan ayudar.

suerte saludos¡¡

ecfisa 04-06-2011 00:48:54

Hola julyus.

Yo tampoco tengo claro cuál es el problema y claro, no sé cuál es el propósito de la función.
Reduje un poco el código respetando la lógica de la función y de este modo no obtengo ningún tipo de error. Pero por supuesto no se si hace lo que tiene que hacer por que desconozco 'que es lo que tiene que hacer'.
Código Delphi [-]
function leaLinea(var F: TextFile; var Texto: string): boolean;
begin
  while not Eof(f) or (Trim(texto) = '')or(Copy(Trim(Texto),1,2)= '::') do
    Readln(F, Texto);
  Texto:= StringReplace(Texto, #9, '     ',[rfReplaceAll]);
  Texto:= Trim(Texto);
  Result:= Copy(Texto, 1, 1) = '[';
  if Eof(F) then Texto:= 'KS_FIN_DE_ARCHIVO';
end;


Llamada de prueba:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  F: TextFile;
  s: string;
begin
  AssignFile(F, 'C:\TEMPORAL\PRUEBA.TXT');
  Reset(F);
  try
   if LeaLinea(F, S) then
     ShowMessage('True: ' + s)
   else
     ShowMessage('False:' + s);
  finally
    FileClose(F);
  end;
end;
Si nos pusieras que pretendes que haga la función sería más sencillo orientarte.

Edito: No utilizé este código en absoluto:
Código Delphi [-]
type
  TextFile = ^Text; esto lo encontre en internet y slucionaba el error
  cbkParmsCrystal = procedure(var posStoredProcs, posCrystalProcs: integer
    ; titulo: string) of object;
  cbkConfigFile = function(var f: TextFile; var st: string): integer of object;

Saludos.

julyus 07-06-2011 18:04:13

hola amigos
 
Hola amigo la verdad si fui muy poco explicito en la pregunta
estoy pasando de delphi 7 a 2010 componentes creados sencillos nada de terceros esos ya los solucione actualizandolos

tengo un problema que aqueja mi programa es una funcion de este tipo no importa lo que haga lo que importa es el dicho problema en delphi 2010
en la definicion escrita abajo el texto en rojo me dice que desconoce el tipo o no es de clarado... el texto en azul encontre en el BND donde un usuario delphi del comun como una solucion al declarar estos tipos de funciones asi... y se solucinaban. esto aparece como un error reportado en embarcadero pero nunca hablan de una solucion para esto.. me han dejado por primera vez jodido este es reportado por el IDE como un internal error TI894.

no hablo del rad mal ya que este es el lenguaje de mis amores pero ha dado un cambio con lo de unicode bien complejo...pero bueno esta parte ya la solucione

Código Delphi [-]
Type
  TextFile = ^Text;
   cbkConfigFile = function(var f: TextFile; var st: String): integer of object;

el siguiente son el resultante de problema anterior es el siguiente
me dice que f es de tipo incompatible?? Por que ?? quiero saber por que
no es compatible o que puedo hacer gracias de antemano es por la definicion de arriba detodas maneras eso creo que es de tipo text y no textfile ?? puede ser eso ??


Código Delphi [-]
function leaLinea(var F: TextFile; var texto: string): boolean;
var
  comentario: boolean;
begin
  repeat
    if eof(F) then
    begin
      texto := KS_FIN_DE_ARCHIVO;
      comentario := false;
    end
    else
    begin
      readln(F, texto);
      comentario := (trim(texto) = '') or (copy(trim(texto), 1, 2) = '::');
    end;
  until not comentario;
  texto := StringReplace(texto, #9, '     ', [rfReplaceAll]);
  texto := trim(texto);
  result := copy(texto, 1, 1) = '[';
end;

ecfisa 07-06-2011 18:33:26

Hola Julyus.
Cita:

me dice que f es de tipo incompatible?? Por que ??
Creo que es por que esta esperando un tipo de variable y al redefinir TextFile como puntero a Text, le estas enviando un puntero a ese tipo y no la variable de ese tipo.

Pienso que sería más o menos como hacer:
Código Delphi [-]
...
type
  Integer = ^Integer;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  if Odd(i) then // <- error: Incompatible types
    ...  
end;
Pero no puedo afirmarlo, es una presunción basada en que una función que espera un tipo va a protestar si le enviás otro...


Saludos.

julyus 07-06-2011 22:08:41

Código Delphi [-]
type
PStrRec = ^StrRec;
StrRec = packed record
codePage: Word;
elemSize: Word;
refCnt: Longint;
length: Longint;
end;

sabes encuento un error llamado ti894 en Quality central pero nadie responde nada ?????????

julyus 08-06-2011 22:16:00

Funcion callback o
 
Hola amigos que pena vovelr a hacer un post de este mismo tema
tengo una funcione delphi 2010 con un delegado o callback mas o menos asi

Código Delphi [-]
Type
 cbkConfigFile = function(var f: TextFile; var st: string): integer of object;

mis problema es que sale un error internal error TI894 y segun lo que he revisado es por el tipo de variable f:TextFile a alguien le ha pasado esto ???
o que tipo debo usar esta es la funcion completa ver abajo
no se si es mi delphi alguien pruebe esto o hay otra mejor forma de hacer esto ?? gracias a todos por su ciolaboracion...:D:D:D:D:confused::confused::confused:

Código Delphi [-]
type
   // metodo callback para pasar otros parámetros al reporte crystal
   cbkParmsCrystal = procedure(var posStoredProcs, posCrystalProcs: integer; titulo: string) of object;
   // metodo callback para leer una parte del archivo de configuración del reporte
   cbkConfigFile = function(var f: TextFile; var st: string): integer of object;

type
   TRptTemplate = class(TObject)
   private
    fLectorConfigCallBack: cbkConfigFile;
    fParametrosCallBack: cbkParmsCrystal;
    fQbe: TKSDBQBE;
    // path donde se encuentra el archivo STR
    pathSTR: string;
  public

Casimiro Notevi 08-06-2011 22:19:25

No repitas temas, si es el mismo, sigue con el que has abierto. Recuerda nuestras normas. Gracias.

julyus 08-06-2011 22:30:48

Cita:

Empezado por Casimiro Notevi (Mensaje 403054)
No repitas temas, si es el mismo, sigue con el que has abierto. Recuerda nuestras normas. Gracias.

Hola casimiro lo que pasa es que lo habia posteado sin leer la guia y era confuso y pocos me contestaron gracias..!:confused::confused:

Casimiro Notevi 09-06-2011 00:36:58

Cita:

Empezado por julyus (Mensaje 403056)
Hola casimiro lo que pasa es que lo habia posteado sin leer la guia y era confuso y pocos me contestaron gracias..!:confused::confused:

Bien, pues explícalo para que lo entendamos, a ver si así te podemos ayudar, gracias.


La franja horaria es GMT +2. Ahora son las 14:42:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi