Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Como extraer solo los numeros en delphi (https://www.clubdelphi.com/foros/showthread.php?t=94519)

igamerpc 16-03-2020 12:49:51

Como extraer solo los numeros en delphi
 
Buenos dias:



Sabes como extreaer numeros ejemplo:
CODIGO201 ese es string de la celda


Extraer solo numero para ir a otra tabla con el int 201.

movorack 16-03-2020 14:00:56

Puedes recorrer uno a uno los caracteres evaluando si es un número.

Código Delphi [-]
function ExtraeNumeros(S: string): Integer;
  var
    i: Integer;
    lStTemp: string;
begin
  Result := 0;
  lStTemp := '';

  for i := 1 to Length(S) do
  begin
    if CharInSet(S[i], ['0'..'9']) then
      lStTemp := lStTemp + S[i];
  end;

  TryStrToInt(lStTemp, Result);
end;

También podrías usar Expresiones regulares :D

igamerpc 16-03-2020 14:02:34

Eso me suena. Muchas gracias voy a comprobar a ver que tal.

:D

ecfisa 16-03-2020 14:05:52

Hola.

Otra opción:
Código Delphi [-]
function GetNumericCode(const strCode: string): Integer;
var
  c,i: Integer;
begin
  Result := 0;
  c := 1;
  for i := Length(strCode) downto 1 do
    if strCode[i] in ['0'..'9'] then
    begin
      Result := Result + (Ord(strCode[i])-Ord('0')) * c;
      c := c * 10;
    end;
end;

Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessageFmt('%d',[GetNumericCode('CODIGO201')]);
end;

Saludos :)

igamerpc 16-03-2020 18:13:35

Funciona perfecto. ^\||/

igamerpc 17-03-2020 10:26:55

Extraer todos los registro de la tabla2 pasar a otra tabla1
La tabla 2, nomf es string ejemplo la cadena codigo200

La tabla 1, fich es integer eso ahi poner 200.



Bueno varios registros





Código Delphi [-]
While Not CFG.DBF_OLD.Eof do
        Begin
          fich:=MOD.tabla2.fieldbyName('NOMF').Value;

          Insertar_registro_fichero('prueba', fich, sender);

          MOD.tabla2.Next;
        end;


Código Delphi [-]
procedure Tform1.Insertar_registro_fichero(TablaN:string; fichero:integer; sender:TObject);
begin

If MOD.Conectar.Connected =False Then
    MOD.Conectar.Connected:=True;

  MOD.tabla1.TableName:=TablaN;
  MOD.tabla1.Active:=True;

  MOD.Command.SQL.Clear;
  MOD.Command.sql.Add('INSERT INTO '+TablaN+'(fich) VALUES(:fich)');
  MOD.Command.ParamByName('fich').Value:=fich;

  Try
    MOD.Command.Execute;

  Except

  End;
  MOD.tabla1.Refresh;

end;


No se si hace falta poner functions extraer solo numeros.

movorack 17-03-2020 16:15:23

Tu mismo tienes la respuesta ^\||/

Cita:

Empezado por igamerpc (Mensaje 536294)

Código Delphi [-]
While Not CFG.DBF_OLD.Eof do
        Begin
          fich:=MOD.tabla2.fieldbyName('NOMF').Value;

          Insertar_registro_fichero('prueba', fich, sender);

          MOD.tabla2.Next;
        end;


Código Delphi [-]
procedure Tform1.Insertar_registro_fichero(TablaN:string; fichero:integer; sender:TObject);
begin

If MOD.Conectar.Connected =False Then
    MOD.Conectar.Connected:=True;

  MOD.tabla1.TableName:=TablaN;
  MOD.tabla1.Active:=True;

  MOD.Command.SQL.Clear;
  MOD.Command.sql.Add('INSERT INTO '+TablaN+'(fich) VALUES(:fich)');
  MOD.Command.ParamByName('fich').Value:=fich; //Aquí estás enviando MOD.tabla2.fieldbyName('NOMF').Value

  Try
    MOD.Command.Execute;

  Except

  End;
  MOD.tabla1.Refresh;

end;


No se si hace falta poner functions extraer solo numeros.


igamerpc 17-03-2020 19:07:56

Ya encontrado solucion. Me costaba de principio porque tenia error incompatible string and integer pero ya encontrado.

Estoy intentado no quitar el 00. Solo salia 1 2 3, y no 001 002..

De todas formas que me contestas solucion esta me funciono maravilla. Gracias.

igamerpc 17-03-2020 19:31:23

Ya entiendo el integer es numero entero no se puede poner 00, por lo tanto es 1 2 3 eso es.

movorack 17-03-2020 22:04:30

Si! mira estos son los tipos de datos numéricos que puedes manejar en Delphi

http://www.delphibasics.co.uk/Article.asp?Name=Numbers

De paso, ese sitio tiene mucha referencia. Ahí puedes aprender bastante!

igamerpc 18-03-2020 00:42:54

Eso es lo q necesito. Gracias.:)


La franja horaria es GMT +2. Ahora son las 21:24:14.

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