Page 1 of 1
					
				Streaming in a stringvariable
				Posted: Mon Jun 27, 2005 12:01 pm
				by Hroudtwolf
				Hello ,
I need a very fast way to copy the whole text in an editorgadget in a stringvariable.
Do anyone knows, how to do it ?
			 
			
					
				Re: Streaming in a stringvariable
				Posted: Mon Jun 27, 2005 12:12 pm
				by PB
				Is a$=GetGadgetText(#editorgadget) too slow?
			 
			
					
				
				Posted: Mon Jun 27, 2005 12:23 pm
				by Hroudtwolf
				Not to slow. But I need to copy bigger texts than 64Kb.
The only way to the solution is to stream it out.
But I don't know how.
			 
			
					
				
				Posted: Mon Jun 27, 2005 12:42 pm
				by jqn
				Hi,
Increment Size of a String:
Code: Select all
Procedure SetStringManipulationBufferSize(Bytes)
  PBStringBase.l = 0
  PBMemoryBase.l = 0
  !MOV eax, dword [PB_StringBase]
  !MOV [esp+4],eax
  !MOV eax, dword [PB_MemoryBase]
  !MOV [esp+8],eax
  HeapReAlloc_(PBMemoryBase, #GMEM_ZEROINIT, PBStringBase, Bytes)
  !MOV dword [_PB_StringBase],eax
EndProcedure
It's copied from any thread, I don't remember, but it work.
JOAQUIN
 
			 
			
					
				
				Posted: Mon Jun 27, 2005 12:53 pm
				by Hroudtwolf
				Thanks.
But the "GetGadgetText"-Command can't grab strings higher than 64KB.
			 
			
					
				
				Posted: Mon Jun 27, 2005 1:05 pm
				by gnozal
				Look in Win32.hlp, search for EM_STREAMIN.
There is an example in the purebasic editor sources ( file 'Purebasic Ide.pb' at 
http://cvs.purebasic.com/ ), search for 'stream'.
 
			 
			
					
				
				Posted: Mon Jun 27, 2005 1:22 pm
				by Hroudtwolf
				EM_StreamIn is for send a string to the editor.
I need a function to read big textes very fast FROM an editorgadget into a variable.
			 
			
					
				
				Posted: Mon Jun 27, 2005 1:48 pm
				by gnozal
				
 I guess I didn't read carrefully enough ...
If you want to read big textes into a variable, you will always have the string limitation problem ; why not use a memory buffer and the #WM_GETTEXT or #EM_GETSELTEXT messages ?
Code: Select all
; Something like this :
*TextBuffer = LocalAlloc_(#LMEM_ZEROINIT, NumberOfCaractersToCopy+1)
SendMessage_(RichEditGadgetHandle, #WM_GETTEXT, NumberOfCaractersToCopy+1, *TextBuffer)
 
			 
			
					
				
				Posted: Mon Jun 27, 2005 1:56 pm
				by Hroudtwolf
				OK. Thats an idea.
Thank you very much 
