AArhin / jazz-sdk

Automatically exported from code.google.com/p/jazz-sdk
2 stars 0 forks source link

String vazia tratada como nulo #7

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Para reproduzir:
1. Instancie um TStringType
2. Atribua uma string vazia a ele

O objeto devia deixar de estar marcado como nulo. No entanto, continua nulo.

Quando o objeto é criado, seu valor é inicializado para uma string vazia
(isso o próprio Delphi faz quando um objeto é instanciado) e ele é marcado
como nulo(em branco). Quando você chama o método SetValue passando uma
string vazia como parâmetro, o teste "FValue <> Value" retorna falso e,
como consequencia disso, nada é feito, apesar de eu estar atrubuíndo a ele
um valor diferente de nulo.
A minha sugestão é adicionar um 'else' que testa se o objeto está nulo e,
se estiver, chama o método Modified.
Ficaria assim:
procedure TStringType.SetValue(const Value: string);
begin
  if FValue <> Value then
  begin
    FValue:= Value;
    Modified;
  end
  else if IsNull then
    Modified;
end;

Imagino que problema semelhante ocorra com os outros tipos(TIntegerType,
TBooleanType, etc).

Original issue reported on code.google.com by magn...@gmail.com on 14 Dec 2006 at 4:28