Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Picavbg - 18 Aprile 2010, 19:16:55

Titolo: [Risolto]Esitare un'istruzione
Inserito da: Picavbg - 18 Aprile 2010, 19:16:55
Vorrei conoscere la status legato al campo di destinazione, dopo l'esecuzione di un'istruzione. Prendiamo ad esempio l'istruzione:
Position = InStr ( String AS String , Substring AS String [ , Start AS Integer , Comparison AS Integer ] )
Dopo la ricerca della Substring all'interno della String di partenza, Position dovrebbe contenere il valore relativo alla posizione occupata nella stringa del 1° ctrt della sottostringa. Ciò vuol dire che:
Codice: [Seleziona]
Dim Position as Integer
Dim Stringa as String = "Vattela a pescà"
Dim Sottostringa as String = " "
Position = InStr(Stringa, Sottostringa)
1) nell'esempio il crt " " da cercare viene sicuramente trovato e  Position conterrà "8", cioè la posizione della prima ricorrenza nella stringa di partenza, corrispondente a TRUE
2) Se invece la sottostringa contenesse "z", Position conterrà "0", corrispondente a FALSE
Supponiamo allora che io volessi interrogare non il contenuto numerico di Position, ma semplicemente la condizione di  TRUE o FALSE  determinata dall'esecuzione  dell'istruzione. Cosa dovrei interrogare?
Titolo: Re: Esitare un'istruzione
Inserito da: fsurfing - 18 Aprile 2010, 20:08:40
Codice: [Seleziona]
if InStr(Stringa, Sottostringa)=0 then

   'codice  d aeseguire se non trova la corrispondenza

ELSE
   'codice da eseguire se trova la corrispondenza
END IF
Titolo: Re: Esitare un'istruzione
Inserito da: Picavbg - 19 Aprile 2010, 00:08:15
Grazie; la soluzione è molto più semplice di quanto la immaginassi.  :-X  :)
Ciao.
Titolo: Re: [Risolto]Esitare un'istruzione
Inserito da: fsurfing - 19 Aprile 2010, 13:08:38
puoi anche farti un apposita funzione:
Codice: [Seleziona]
PUBLIC SUB trova(stringa AS String, substringa AS String) AS Boolean
 
 
  DIM risultato AS Boolean = FALSE
 
  IF InStr(stringa, substringa) <> 0 THEN
      risultato = TRUE
  ELSE
      risultato = FALSE
  ENDIF
 
  RETURN risultato
 
 
END
da utilizzare così ad esempio:

Codice: [Seleziona]
if trova(stringa,substringa)=true then

  'codice da eseguire se ce la corrispondenza
end if
Titolo: Re: [Risolto]Esitare un'istruzione
Inserito da: milio - 19 Aprile 2010, 13:51:57
dovrebbe funzionare anche così:
Codice: [Seleziona]
IF InStr(stringa, substringa) THEN 
...Codice se TRUE
ELSE
...Codice se FALSE
ENDIF