Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Doble comilla con Quotedstr? (https://www.clubdelphi.com/foros/showthread.php?t=96318)

ArtPortEsp 29-07-2023 00:59:06

Doble comilla con Quotedstr?
 
Hola a todos,

en el proceso de migrar viejos programas de D7 a RAD Studio me encontré con este problema:

este código:

Código Delphi [-]
Dm.MyQactualiza.SQL.Text := 'Delete from polizaspdf where archivo='+quotedstr('gmx.xlsx')+' and sl_falta='+quotedstr(formatdatetime('yyyy-mm-dd',date));

me esta produciendo este string:

Delete from polizaspdf where archivo=''gmx.xlsx'' and sl_falta=''2023-07-28''


Y antes de que me llamen la atención a que debería usar PARAMETERS en lugar de escribir así los querys, ya lo hice, pero uso QUOTEDSTR para otras cosas y se supone que debería producir strings con una sola comilla.

a alguien más le ha pasado?

Casimiro Notevi 29-07-2023 12:35:43

Ummm... no sé cómo lo haces :confused:



ArtPortEsp 29-07-2023 22:45:04

Cita:

Empezado por Casimiro Notevi (Mensaje 552191)
Ummm... no sé cómo lo haces :confused:



Ni yo tampoco sé que pasa, hice al igual que tu un proyecto :

Código Delphi [-]
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
     Edit2.Text := Quotedstr(Edit1.text);
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
     Showmessage(Edit2.text);
end;

end.

Y funciona como debería funcionar, para solucionar el problema de los Querys los cambie por parámetros (que es lo que debería haber hecho desde el principio). Pero es desesperante encontrar un error que no tiene ninguna lógica aparente.

aledieb 30-07-2023 01:24:16

Hola, verificaste que en tu proyecto no exista esa función y el compilador toma la que esta en el proyecto en ves de la que esta en System.SysUtils

Para ver si es eso de forma fácil
Código Delphi [-]
Dm.MyQactualiza.SQL.Text := 'Delete from polizaspdf where archivo='+System.SysUtils.quotedstr('gmx.xlsx')+' and sl_falta='+System.SysUtils.quotedstr(formatdatetime('yyyy-mm-dd',date));

Casimiro Notevi 30-07-2023 10:11:01

Cita:

Empezado por aledieb (Mensaje 552196)
Hola, verificaste que en tu proyecto no exista esa función y el compilador toma la que esta en el proyecto en ves de la que esta en System.SysUtils

Es una buena posibilidad.


La franja horaria es GMT +2. Ahora son las 15:40:11.

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