PDA

Visualizza la versione completa : [DELPHI] Suddivisione di una stringa con carattere separatore


danz67
10-05-2007, 21:53
Ciao a tutti,

ho una stringa formata pressapoco cosi:

dato1@dato2@dato3@dato4@dato5@

ho la necessita di frammentare la stringa e di eliminare il simbolo @ e suddividere il risultato

esempio...

dato1

dato2

dato3

dato4

123delphi321
10-05-2007, 22:36
ciao, ho avuto un problema simile.

cercando su internet ho trovato del codice che poi ho un po adattato alle mie esigenze....


function split(input:string;schar:char;s:integer):string;
var
i,n:integer;
schop: string;
begin
n := 0;
for i := 1 to length(input) do
begin
if (input[i] = schar) then
begin
inc(n);
if n = s then
split := schop
else
schop := '';
end
else
schop := schop + input[i];
end;

inc(n);
if n = s then split := schop;

end;


per estrarre i dati devi fare cosi:

StringaDati:='dato1@dato2@dato3@dato4@dato5@'

MiaStringa:= SPLIT(StringaDati,'@',3);

in questo caso MiaStringa conterra 'Dato3'.

ciao

danz67
11-05-2007, 08:36
Sei stato di grande aiuto, sono riuscito ad adattare perfettamente la tua soluzione alle mie esigenze.
Grazie mille :ciauz:

alka
11-05-2007, 14:37
Penso sia possibile usare anche la classe TStringList e la proprietÓ DelimiterChar, ma dato che hai giÓ risolto brillantemente... :)

danz67
11-05-2007, 15:06
Originariamente inviato da alka
Penso sia possibile usare anche la classe TStringList e la proprietÓ DelimiterChar, ma dato che hai giÓ risolto brillantemente... :)

Visto che c'Ŕ sempre da imparare, penso che sarebbe interessante usare anche questa tecnica.
Eventualmente postero' i miei dubbi.

:ciauz:

danz67
11-05-2007, 18:02
Originariamente inviato da 123delphi321
ciao, ho avuto un problema simile.

cercando su internet ho trovato del codice che poi ho un po adattato alle mie esigenze....


function split(input:string;schar:char;s:integer):string;
var
i,n:integer;
schop: string;
begin
n := 0;
for i := 1 to length(input) do
begin
if (input[i] = schar) then
begin
inc(n);
if n = s then
split := schop
else
schop := '';
end
else
schop := schop + input[i];
end;

inc(n);
if n = s then split := schop;

end;


per estrarre i dati devi fare cosi:

StringaDati:='dato1@dato2@dato3@dato4@dato5@'

MiaStringa:= SPLIT(StringaDati,'@',3);

in questo caso MiaStringa conterra 'Dato3'.

ciao

Ho un'altra necessitÓ.
Invio una query... select cognome, nome from clienti where idcliente = 23
il risultato mi viene restituito formattato da una pagina php cosi:

rossi@mario@

a questo punto mi serve estrarre i due valori restituiti e dividerli cosi:

rossi
mario

mi puoi aiutare perfavore?

Grazie :ciauz:

danz67
11-05-2007, 19:12
Fermi tutti, ci sono riuscito con il suggerimento di Alka.

Grazie a tutti, :ciauz:

Loading