GARANTIR DESCONTO

Fórum Problemas com packet record e tamanho da string #411815

23/01/2012

0

Pessoal, eu estou com um problema assim: Minha aplicação ela cria em Run Time um campo, que nós chamamos de campos customizáveis. Acontece que
tem uma validação no tamanho desse campo, e no momento está em 31 caracteres(Char). Bem, exeiste uma função do tipo TDSDataPacketFldDesc(
procedure AddFieldDesc(const FldName: string; FldType, Attributes: Integer);
var
FldDesc: TDSDataPacketFldDesc;)
Essa é a declaração dessa var. Isto tudo está na Unit Provider. Esse tipo(TDSDataPacketFldDesc) está declarado na Unit DSIntf. Nessa Unit, esse tipo é um PACKED RECORD, que tem os seguintes campos:
TDSDataPacketFldDesc = packed record
szFieldName: MIDASNAME; { Column Name }
iFieldType: Integer; { Column Type }
iAttributes: Word; { Column attributes }
end;
Esse MIDASNAME está declarado assim:
MIDASNAME = packed array [0..31] of Char; e eu mudei para MIDASNAME = packed array [0..60] of Char; Mas continua não funcionando. Tudo isso na uNIT DSIntf. Como eu faço para poder aceitar nomes com mais de 31 caracteres? Onde eu devo alterar?
Pjava

Pjava

Responder

Posts

25/01/2012

Pjava

Fiz essa validação(fixei o tamanho = 60 ) e o erro foi: Field name não pode ser maior que 31 caracteres.

procedure AddFieldDesc(const FldName: string; FldType, Attributes: Integer);
  var
    FldDesc: TDSDataPacketFldDesc;
  begin
    if Length(FldName) >= 60 {SizeOf(FldDesc.szFieldName)} then // validei aqui nessa linha como podem ver
      raise EDSWriter.CreateFmt(SFieldNameTooLong,[SizeOf(FldDesc.szFieldName) - 1]);
    FillChar(FldDesc, SizeOf(FldDesc), 0);
    StrLCopy(FldDesc.szFieldName, PChar(FldName), SizeOf(FldDesc.szFieldName) - 1);
    FldDesc.iFieldType := FldType;
    FldDesc.iAttributes := Attributes;
    Check(FIDSWriter.AddColumnDesc(FldDesc));
  end;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar