(gdb) break 14 Breakpoint 1 at $806603c: file test4.pas, line 14. (gdb) run Starting program: /home/pircsrv/src/test4 Enter a string: [EMAIL PROTECTED] Replace all digits with ? Breakpoint 1, main () at test4.pas:14 14 readLn(w); (gdb) n X 15 replace(['0'..'9'], w, s); (gdb) s
Program received signal SIGSEGV, Segmentation fault. $08066073 in main () at test4.pas:15 15 replace(['0'..'9'], w, s); (gdb) Can anyone help me find out what's going on here ? It doesn't even go into the function and just segfaults! Makes me think FPC can't handle the ['0'..'9'] passed to the function... replace is defined as such: procedure replace(search: String; replace: String; var s: String); procedure replace(const chars: array of char; replace: String; var s: String); procedure replace(search: String; replace: String; var s: String); var startPos: Integer; done: Boolean; begin done := FALSE; while NOT done do begin startPos := pos(search, s); if (startPos = 0) then begin done := TRUE; end else begin delete(s, startPos, length(search)); insert(replace, s, startPos); end; end; end; procedure replace(const chars: array of char; replace: String; var s: String); var index: Integer; done: Boolean; begin done := FALSE; while NOT done do begin if NOT isin(s, chars, index) then begin done := TRUE; end else begin delete(s, index, 1); insert(replace, s, index); end; end; end; the isin functions are defined as such: function isin(s: String; search: String): Boolean; function isin(s: String; const chars: array of char): Boolean; function isin(s: String; const chars: array of char; var index: Integer): Boolean; function isin(s: String; search: String): Boolean; begin if pos(search, s) = 0 then begin isin := FALSE; end else begin isin := TRUE; end end; function isin(s: String; const chars: array of char): Boolean; var i: Integer; begin isin := isin(s, chars, i); end; function isin(s: String; const chars: array of char; var index: Integer): Boolean; var i: Integer; begin isin := TRUE; for i := low(chars) to high(chars) do begin if NOT isin(s, '' + chars[i]) then begin index := i; isin := FALSE; break; end; end; end; Anything would be helpfull :) cheers James -- - - James Mills Zero Defect Software Engineers Group - ZDSEG _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal