KhurramM ha scritto: > Thanks Sir. > > You have given me tips better then the book I am following on C. :working: > > My two queries: > 1> Can I implement ctrl+D or ^D, which I am not able to here, as in C? > 2> The program works with INPUT and LINE INPUT. But Line Input also takes > blank space as input, while INPUT ends the program over here. And I use > string here, but in C it was integer? > > --------------------------------------------------- Just for reference: > Well I made my program final as: > > PUBLIC SUB Main() > > ' Declare AND initialize variables. > DIM c, count AS Integer > > DIM c1 AS String > > ' READ , PRINT , AND count characters. > PRINT "Enter characters (or Press Carriage Return to quit): " > LINE INPUT c1 > count += Len(c1) > > WHILE (c1 <> "") ' This is the best solution > PRINT c1 > LINE INPUT c1 > count += Len(c1) > WEND > > ' PRINT the number OF characters printed. > PRINT count & " characters printed." > > END > I put the following code in a program; the code is invoked by pressing Button1:
PUBLIC SUB Button1_Click() ' Declare AND initialize variables. DIM c, count AS Integer DIM c1 AS String ' READ , PRINT , AND count characters. PRINT "Enter characters (or Press Carriage Return to quit): " WHILE NOT Eof LINE INPUT c1 PRINT c1 count += Len(c1) WEND ' PRINT the number OF characters printed. PRINT count & " characters printed." END Running the program inside the IDE, and using the internal console, no EOF is generated, but your version (which tested for empty lines) worked. Then I made an executable (Project menu -> Generate -> Executable) and launched it from a terminal. It runs correctly; you repeatedly type some text + ENTER, or you type Ctrl-D. The behaviour is correct and, as I was supposing, no Ctrl-D is detected inside the line input, but it is if you type ^D alone. As the routine is invoked every time Button1 is pressed, I tried to press Button1 again: after the first ^D no more characters are detected. This makes sense, because you cannot go past the EOF... Then I launched the following shell command: echo "ciao" |./dand.gambas Doing so, the standard input for the program is redirected elsewhere (the output of the echo command). The program works as expected - it counts 4 characters and senses the EOF correctly. Now, I suppose you are disappointed by INPUT and LINE INPUT, which are multi-char statements. If you want to process single characters, then you must use the READ statement (perhaps there is also a INKEY$) -- see the docs. Anyway, gambas does not have chars like C - you can use strings (of length 1); the ASC() function returns the numerical code of a character, and CHR() returns a char (a string of len 1) by giving its ascii code. There is no character to designate EOF - you must use the Eof() function. If you want to be a real gambas programmer, stop to put parenthesis around tests, like "while (c1<>...)"! :-) If you have a goal in mind, perhaps could be better you tell it, so we can help you more precisely. Cheers, -- Doriano Blengino "Listen twice before you speak. This is why we have two ears, but only one mouth." ------------------------------------------------------------------------------ Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers & brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, & iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian Group, R/GA, & Big Spaceship. http://www.creativitycat.com _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user