GARANTIR DESCONTO

Fórum Ordenação com Numero e String em um ListBox #411195

04/01/2012

0

Nobres colegas, estou tendo certa dificuldade em fazer uma ordenação em um ListBox com números e strings

Salvo as imagens contidas em meu banco em uma pasta temporária. Ex.: 001.jpg,002.jpg,003.jpg, etc.

Depois tenho que recuperar essas imagens e listar em um ListBox para com o componente eDocEngine, transformar em PDF.

Porém, quando as imagens são listadas no ListBox, as mesmas não seguem a ordem e ficam da seguinte forma:
001.jpg
0010.jpg
0011.jpg
0012.jpg
...
002.jpg
0020.jpg
etc.

Como procedo para que as imagens fiquem na ordem correta? 001.jpg, 002.jpg, 003.jpg, ....

Abaixo o código utilizado para executar os procedimentos

procedure TfrmVerImagemLic.AdvGlassButton8Click(Sender: TObject);
var
  LI: Integer;
  LFileExtension: string;
  Arq: TsearchRec;
begin
  DelArq(*.jpg, C:\G2DOC\Temp);
  if not DirectoryExists(C:\G2DOC\Temp\) then ForceDirectories(C:\G2DOC\Temp\);
  //SALVA AS IMAGENS NA PASTA TEMP
  try
    MSG.Visible := True;
    MSG.Caption := Preparando Imagens! Aguarde..;
    Screen.Cursor := crSqlWait;
    Application.ProcessMessages;
    DM.cds_Licitacao_Img.First;
    while not DM.cds_Licitacao_Img.Eof do
    begin
      TBlobField(DM.cds_Licitacao_Img.FieldByName(Imagem)).SaveToFile(C:\G2DOC\Temp\ + 00 + DM.cds_Licitacao_ImgPAGINA_NUMERO.Text + .jpg);
      DM.cds_Licitacao_Img.Next
    end;
  finally
    MSG.Visible := False;
    Screen.Cursor := crDefault;
    DM.cds_Licitacao_Img.First
  end;

  //CARREGA NO LIST BOX E GERA O ARQUIVO PDF COM O COMPONENTE eDocEngine
  if FindFirst(C:\G2DOC\Temp\*.jpg, faArchive, Arq) = 0 then
  begin
    try
      MSG.Visible := True;
      MSG.Caption := Gerando PDF. Aguarde..;
      Screen.Cursor := crSqlWait;
      Application.ProcessMessages;
      repeat
        Application.ProcessMessages;
        ListBox1.Items.Add(Arq.Name);
      until FindNext(Arq) <> 0;
      if (ListBox1.Count = 0) then Exit;
      if (RG1.ItemIndex = 0) then
      begin
        dlgSave1.FileName := Licitacao  + DM.cds_Licitacao_ImgNUMERO_PROCESSO.Text;
        if not dlgSave1.Execute then Exit;
        with gtPDFEngine1 do
        begin
          FileName := dlgSave1.FileName;
          MeasurementUnit := muPixels;
          Preferences.ProcessAfterEachPage := False;
          for LI := 0 to (ListBox1.Count - 1) do
          begin
            img1.Picture.LoadFromFile(C:\G2DOC\Temp\ + ListBox1.Items[LI]);
            Page.PaperSize := Custom;
            Page.Width := img1.Picture.Width;
            Page.Height := img1.Picture.Height;
            if (LI <> 0) then
              NewPage
            else
              BeginDoc;
            LFileExtension := ExtractFileExt(ListBox1.Items[LI]);
            if (((CompareText(LFileExtension, .wmf) = 0) or
              (CompareText(LFileExtension, .emf) = 0)) and (not chk1.Checked)) then
            begin
              PlayMetafile(img1.Picture.Metafile);
            end
            else
            begin
              DrawImage(0, 0, img1.Picture.Graphic);
            end;
          end;
          EndDoc;
        end;
      end;
      FindClose(Arq);
    finally
      DelArq(*.jpg, C:\G2DOC\Temp);
      ListBox1.Clear;
      MSG.Visible := False;
      Screen.Cursor := crDefault;
    end;
  end;
end;


Que poder me dar alguma dica fico grato,

Abraço.
Ralp Bezerra

Ralp Bezerra

Responder

Posts

04/01/2012

Wilton Júnior

Tudo joia companheiro, se minha memória não falha esse ordenação é caracteristo de string, digamos então que para string é normal que ordene dessa forma, o que pode tentar é queria um vetor inteiro e depois transportar para o listbox.

Responder

Gostei + 0

04/01/2012

Ralp Bezerra

Não entendi o que quiz dizer.

Teria algum exemplo?

Abraço.
Responder

Gostei + 0

05/01/2012

Ralp Bezerra

Será que existe algum outro componente que mantenha a ordenação dos arquivos como estão no disco?
Responder

Gostei + 0

09/01/2012

Ralp Bezerra

Bastou adicionar zeros a esquerda na hora de salvar que o problema foi resolvido.

Abraço.
Responder

Gostei + 0

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

Aceitar