Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2006
vhr vhr is offline
Miembro
 
Registrado: feb 2005
Ubicación: Argentina- Buenos Aires- Quilmes
Posts: 28
Poder: 0
vhr Va por buen camino
Problemas con Unicode (creo...)

Hola disculpen la molestia, el duda q no puedo resolver, es respecto a unicode, (creo) por distintas razones yo quiero trabajar una cadena de caracteres q me viene de un ClientDataSet gracias a la propiedad XMLData, en dicho ClientDataset, existe un campo blob (donde se guarda una imagen jpg), como comente requiero lastimosamente tratar a esa cadena como si fuera un WideSting comun, (no puedo usar XMLDocument ni nada por el estilo), el problema es que con algunas imágenes (que deben meter algun carácter raro en la cadena del xml) las funciones posex o length no funcionan, o dan resultados inadecuados, por ejemplo en un widestring q tiene una longitud de 5426, el length de dicha variable me da “0”, el posex trabaja y encuentra subcadenas dentro de la cadena principal pero hasta una determinada posición, luego de ella no encuentra mas nada, es como si la cadena se truncara, pero sin embargo puedo hacer a := b[5400] donde b es el widestring, sin ningun problema, no es para nada difícil reprogramar la funcion posex para que tome como parámetro un widestring en lugar de un string, pero con length…. Se me queman los papeles, y la verdad es que tengo incontables lineas de codigo donde uso esa funcion (length) y me duele pensar en q todo eso no pude andar


La modificacion burda de posex es la siguiente

Código Delphi [-]
function Wd_PosEx(const SubStr, S: Widestring; Offset: Cardinal = 1): Integer;
Código Delphi [-]
var
  I,X: Integer;
  Len, LenSubStr: Integer;
begin
  if Offset = 1 then
    Result := Pos(SubStr, S)
  else
  begin
    I := Offset;
    LenSubStr := Length(SubStr);
    Len := Length(S) - LenSubStr + 1;
    while I <= Len do try
      if S[i] = SubStr[1] then begin
        X := 1;
        while (X < LenSubStr) and (S[I + X] = SubStr[X + 1]) do Inc(X);
        if (X = LenSubStr) then begin
          Result := I;
          exit;
        end;
      end;
      Inc(I);
    except
      Result := 0;
    end;
  end;
end;
 
Si bien es realmente simple la verdad no pude probarla pues al no tener resuelto el length... jjejejejeje espero q esto funcione.
 
PD trabajo con delphi 7

Última edición por marcoszorrilla fecha: 06-04-2006 a las 19:55:41.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Unicode Vs Delphi PTW Varios 0 23-01-2006 15:01:29
Unicode PTW Varios 0 22-01-2006 12:30:31
Unicode arantzal Varios 2 19-09-2005 17:44:07
Unicode Sworied MySQL 1 12-08-2004 07:27:38
Unicode pacogp Varios 2 17-02-2004 14:02:35


La franja horaria es GMT +2. Ahora son las 13:27:05.


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
Copyright 1996-2007 Club Delphi