Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    33

    parzializzare delle stringhe in VB

    Ciao a tutti...
    Io ho scritto in delphi questa funzione per "spezzettare" una stringa di dati, dato che non ho molta confideza con VB mi chiedevo se posso implementarla così com'è in un programmino di VB...
    Sapete darmi delle indicazioni?
    Se non posso implementarla così com'è quali modifiche devo fare al codice?
    Grazie...
    Ciao


    function str2real(s:string):real;
    var x:real;
    c:integer;
    begin
    val(s,x,c);
    str2real:=x;
    end;

    function real2str(x:real;c,d:integer):string;
    var st:string;
    begin
    str(x:c:d,st);
    real2str:=st;
    end;

    function str2int(s:string):integer;
    var x:integer;
    c:integer;
    begin
    val(s,x,c);
    str2int:=x;
    end;

    function int2str(x:integer;c:integer):string;
    var st:string;
    begin
    str(x:c,st);
    int2str:=st;
    end;


    function ParseString(stringa,separatore:string):TStringVect or;
    var i,k:integer;
    st:string;
    tmp:TStringVector;
    begin
    st:=stringa;
    i:=0;
    setlength(tmp,i);

    while length(st)>0 do
    begin
    k:=pos(separatore,st);
    if k>0 then
    begin
    i:=i+1;
    setlength(tmp,i);
    tmp[i-1]:=leftstr(st,k-1);
    st:=rightstr(st,length(st)-k);
    end
    else
    begin
    i:=i+1;
    setlength(tmp,i);
    tmp[i-1]:=st;
    st:='';
    end;
    end;

    ParseString:=tmp;
    end;

    Fabio
    Fabio

  2. #2
    Innanzitutto dovresti indentare il codice qui sopra perchè si capisce poco e niente (usa i tag "[ code]" e "[/ code]" senza spazio). Poi chi è il chiamante iniziale? Cosa deve fare esattamente la funzione? Il tuo codice così com'è lo si può benissimo passare in VB con le dovute correzioni, però per questo ci vuole la pazienza di modificarlo...
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  3. #3


    Allora io non sono una esperta di Delphi, anzi non lo ho mai visto!

    Solo che vorrei capire meglio cosa intendi per spezzettare.

    Le funzioni sulle stringhe per effettuare dei tagli sono:

    len(STRINGA) ==> Restituisce la lunghezza in caratteri della stringa.
    (Esempio: len("ciao") -> 4)

    STRINGA2 = Right$(STRINGA1, N) ==> Inserisce nella STRINGA2 gli N caratteri da destra della STRINGA1.
    (Esempio: Stringa2 = Right$("Ciao", 2). Allora Stringa2 conterrà "ao")

    STRINGA2 = Left$(STRINGA1, N) ==> Inserisce nella STRINGA2 gli N caratteri da sinistra della STRINGA1.
    (Esempio: Stringa2 = left$("Ciao", 2). Allora Stringa2 conterrà "ci")

    ARRAYSTRIGA = Split(STRINGA, "S") ==> Taglia la stringa ogni volta che incontra un separatore S.
    (Esempio: ARRAYSTRINGA = Split("Ciao#Hello#Bye","#"). Risultato:
    ARRAYSTRINGA(0) -> Ciao
    ARRAYSTRINGA(1) -> Hello
    ARRAYSTRINGA(2) -> Bye )


    Questo è un riassunto delle funzioni piu importanti sulle stringhe
    Spero di esserti stata utile
    Paperina :-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    33
    Questo è il codice corretto....
    Io voglio leggere una stringa, che arriva dalla seriale,e spezzarla dove si hanno i separatori (che nel mio caso sono virgole), fatto ciò voglio estrarre solo i campi che mi interessano.
    io questo prima di tentare di farlo su stringhe che arrivavano dallo strumento collegato alla seriale lo facevo con dei file che acquisivo con un'altro programma (ora ho l'esigenza del real time, prima no!)...
    Spero che possiate essermi d'aiuto...
    Grazie...


    [code]
    function str2real(s:string):real;
    var x:real;
    c:integer;
    begin
    val(s,x,c);
    str2real:=x;
    end;

    function real2str(x:real;c,d:integer):string;
    var st:string;
    begin
    str(x:c:d,st);
    real2str:=st;
    end;

    function str2int(s:string):integer;
    var x:integer;
    c:integer;
    begin
    val(s,x,c);
    str2int:=x;
    end;

    function int2str(x:integer;c:integer):string;
    var st:string;
    begin
    str(x:c,st);
    int2str:=st;
    end;


    function ParseString(stringa,separatore:string):TStringVect or;
    var i,k:integer;
    st:string;
    tmp:TStringVector;
    begin
    st:=stringa;
    i:=0;
    setlength(tmp,i);

    while length(st)>0 do
    begin
    k:=pos(separatore,st);
    if k>0 then
    begin
    i:=i+1;
    setlength(tmp,i);
    tmp[i-1]:=leftstr(st,k-1);
    st:=rightstr(st,length(st)-k);
    end
    else
    begin
    i:=i+1;
    setlength(tmp,i);
    tmp[i-1]:=st;
    st:='';
    end;
    end;

    ParseString:=tmp;
    end;
    [\code]


    Fabio

  5. #5
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Per quanto riguarda l'indentazione e altri tag guarda qui.
    In VB c'è la funzione Split che restituisce un'array di sottostringhe estrapolate da una stringa principale e delimitate da un carattere a scelta:
    codice:
    Dim StrX As String
    Dim VettStrX() As String
    Dim Cont As Integer
    
    StrX = "A,B,C"
    
    VettStrX() = Split(StrX, ",", -1)
    For Cont = 0 To UBound(VettStrX)
      MsgBox VettStrX(Cont)
    Next Cont

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.