![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Hola, deberas crearte, por ejemplo, unas funciones para ir recorriendo la 'frase':
y luego ir recorriendo las 'palabras' en el texto
estas funciones por eso estan incompletas. No estoy seguro si identificara la ultima palabra , ademas de tener que tratarse los caracteres especiales #13, #10, etc...saludos PD: edito, y incluyo el stringreplace, y trim para eliminar espacios finales e iniciales. Última edición por coso fecha: 10-11-2008 a las 22:43:58. |
|
#2
|
|||
|
|||
|
Jo, me parece que me queda mucho por estudiar porque no he entendido practicamente nada de tu codigo coso, aun así muchas gracias, intentaré empaparme un poco mas a ver si me aclaro.
|
|
#3
|
|||
|
|||
|
en primerapalabra :
si pos(' ',o) = 0 entonces es que no hay espacios, por lo que el parametro o es una palabra. Si no es el caso y hay espacios, entonces se copia de o desde la posicion cero a la posicion del espacio (la primera palabra) en restofrase : si pos(' ',o) = 0 entonces no hay espacios, por lo que no hay resto de frase (es una sola palabra). Si si que hay espacios, entonces se copia de o desde la posicion del primer espacio hasta el final (el resto de la frase) los stringreplace sirven para descartar los caracteres #13, #10, etc... el bucle se conforma asi : mientras haya 'frase', se coge la primera palabra y se asigna a 'frase' el resto de la frase. Luego con la palabra cogida (s) tu ya haces lo que necesites. saludos. |
|
#4
|
|||
|
|||
|
Ahora mucho mas claro, pero aun asi perdona mi ignoracia pero entiendo que Result es lo que va a devolver la funcion ¿no? esque en el PseudoBasic que he programado no existian las funciones y todavia me lio porque por ejemplo ni entiendo muy bien la definicion de la funcion
function PrimeraPalabra(o : string) : string; entiendo que PrimeraPalabra es el nombre de la funcion, a continuacion (o:string) querra decir que se va a usar esa variable de tipo Sting y :String que el resultado de la funcion de PrimeraPalabra será del tipo String ¿eso seria igual que decir lo siguiente? Funcion PrimeraPalabra:string; var o:String; Begin ... Por otro lado en la segunda Funcion function Restofrase(o : string) : string; begin if Pos(' ',o) = 0 then result := '' else result := Copy(o,Pos(' ',o)+1,1000); end;comprobamos si hay alguna posicion en la haya un ' ' pero eso ya se ha hecho en la primera funcion ¿no? y por otro lado en la ultima expresion usamos copy(o,Pos(' ',o)+1,1000) pero al hacer eso suponemos que hay 1000 caracteres en el String entonces no se copiaran todos los signos raros esos que veo cuando uso el depurador #$D ¿? Asias por tu paciencia y siento hacer unas preguntas tan simples. |
|
#5
|
|||||
|
|||||
|
Cita:
Cita:
Cita:
Cita:
Cita:
|
|
#6
|
|||
|
|||
|
Ok, ya me queda mas claro,
al final he montado un codigo que hace lo que quiero aunque se complica demasiado Código:
procedure TFXY.Button5Click(Sender: TObject);
var
cadena1:string;
cadena2:string;
cadena3:string;
siguiente:string;
posicion:integer;
posicion1:integer;
posicion2:integer;
chivato:integer;
chivato2:integer;
a: Integer;
b: Integer;
label
kk;
begin
chivato:=0;
chivato2:=0;
cadena1:='ENTITIES';
posicion:=pos(cadena1,mtexto.Text);
a:=posicion;
while chivato=0 do
begin
kk:
a:=a+1;
cadena2:=mtexto.Text[a+7];
if (cadena2=' ')or
(cadena2=#10) or
(cadena2=#13) or
(Cadena2=#0) then
BEGIN
b:=a+1;
siguiente:=mtexto.text[b+7];
if (siguiente=' ')or
(siguiente=#10) or
(siguiente=#13) or
(siguiente=#0) then
goto kk
else
begin
posicion1:=a+7;
chivato:=1;
end;
END;
end;
while chivato2=0 do
begin
a:=a+1;
cadena2:=mtexto.Text[a+7];
if (cadena2=' ')or
(cadena2=#10) or
(cadena2=#13) or
(Cadena2=#0) then
BEGIN
posicion2:=a+7;
chivato2:=1;
END;
end;
mtexto.SelStart:=posicion1;
mtexto.SelLength:=posicion2-posicion1;
Mtexto.SetFocus;
cadena3:=mtexto.SelText;
memo1.Text:=cadena3;
|
|
#7
|
|||
|
|||
|
He seguido mirando el tema ahora desde el punto de vista de las lineas y me encuentro con una chorrada de problemilla pero no le veo la salida, como se seleccionan varias lineas de Memo?
cuando trabajo Con string hago lo siguiente: memo.selstart:=posicioninicial; memo.sellength:=logitud; memo.setfocus; cadena:=memo.seltext; pero si trabajo con las lineas no se como hacerlo. Gracias |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| contar numero de palabras en un string | lina maria | Varios | 9 | 19-05-2008 20:33:50 |
| Recorrer un STRING | creus | Varios | 3 | 07-01-2007 22:52:37 |
| Error al recorrer string | creus | Varios | 6 | 16-11-2006 22:39:45 |
| recorrer string | emiliu | Varios | 2 | 16-11-2005 10:23:25 |
| Recorrer un string | davidgaldo | Varios | 3 | 09-11-2005 10:04:28 |
|