Writeln and my own procedure

  • 1
  • 2
  • Seite 2 von 2
Merlin
Administrator
Avatar
Geschlecht:
Alter: 26
Beiträge: 1480
Dabei seit: 03 / 2005
Betreff:

Re: Writeln and my own procedure

 · 
Gepostet: 16.07.2010 - 10:16 Uhr  ·  #9
Hi Cusko.

I suspect that your problem is that there is a WriteLn within your driver. I doubt if WriteLn is designed to be recursive in this way.

User written functions are able to be recursive because they use the frame for parameters and local variables, but internal procedures tend to use more direct and efficient mechanisms like passing parameters within registers. Normally that is not an issue but in this case it is.

Regards

Merlin.
Avra
Schreiberling
Avatar
Geschlecht:
Herkunft: Belgrade, Serbia
Alter: 54
Homepage: rs.linkedin.com/in…
Beiträge: 653
Dabei seit: 07 / 2002
Betreff:

Re: Writeln and my own procedure

 · 
Gepostet: 18.07.2010 - 01:19 Uhr  ·  #10
Zitat
TelnetTXBuffer:= TelnetTXBuffer+Letter;

This is not very efficient. Just imagine how many bytes are copied every time until string becomes for example 200 characters long. It is better to put just single character and increment index. If you use string instead of an array then you can modify length before sending to ethernet.
Cusko
 
Avatar
 
Betreff:

Re: Writeln and my own procedure

 · 
Gepostet: 19.07.2010 - 11:23 Uhr  ·  #11
Thanks guys,

I successfully get the right results. As suggested I used an array instead of a string. The right code:
Code

var 
  TelnetTXBuffer  : Array[ 0..99] of Byte;
  TxBufferIndex   : byte;

{$DEVICE}
procedure EthOut( Letter:char);
begin
  TelnetTXBuffer[ TxBufferIndex]:= byte( Letter);
  inc( TxBufferIndex);
  if ( Letter = #10) or ( TxBufferIndex = 100) then
     TinaSendPacket( sTelnet, @TelnetTXBuffer, Word( TxBufferIndex));
     TxBufferIndex:= 0;
  endif;
end;


Again, Thanks for help.
Cusko
  • 1
  • 2
  • Seite 2 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   60   74 · Page-Gen-Time: 0.068234s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI