Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // See also: http://pastebin.com/36yMX1Mf - "how to get call stack for last exception"
- // See also: http://pastebin.com/ACtr0r6S - "how to silently log exception"
- // See also: http://pastebin.com/rdNbEwPH - "how to get call stack on demand"
- // Case 0: use StackTrace property of exception object (Delphi 2009+)
- except
- on E: Exception do
- Memo1.Lines.Text := E.StackTrace;
- end;
- // Case 1: use ToString method to convert call stack to single string with default formatting
- var
- CallStack: TEurekaBaseStackList;
- begin
- CallStack := ...;
- Memo1.Lines.Text := CallStack.ToString;
- end;
- // Case 2: use Assign method to convert call stack to TStrings object with default formatting
- var
- CallStack: TEurekaBaseStackList;
- begin
- CallStack := ...;
- Memo1.Lines.Assign(CallStack);
- end;
- // Case 3: use CallStackToString function
- // (CallStackToString function allows you to override header and formatting)
- var
- CallStack: TEurekaBaseStackList;
- Formatter: TCompactStackFormatter;
- begin
- CallStack := ...;
- // Default formatting and header:
- Memo1.Lines.Text := CallStackToString(CallStack);
- // Custom header:
- Memo1.Lines.Text := CallStackToString(CallStack, 'Error Details:');
- // Custom formatting:
- Formatter := TCompactStackFormatter.Create;
- try
- // <- here you can customize Formatter (for example: alter captions for columns, etc.)
- Memo1.Lines.Text := CallStackToString(CallStack, '', Formatter);
- finally
- FreeAndNil(Formatter);
- end;
- end;
- // Case 4: use CallStackToStrings function
- // (CallStackToStrings function allows you to override header and formatting)
- var
- CallStack: TEurekaBaseStackList;
- Formatter: TCompactStackFormatter;
- begin
- CallStack := ...;
- // Default formatting and header:
- CallStackToStrings(CallStack, Memo1.Lines);
- // Custom header:
- CallStackToStrings(CallStack, Memo1.Lines, 'Error Details:');
- // Custom formatting:
- Formatter := TCompactStackFormatter.Create;
- try
- // <- here you can customize Formatter (for example: alter captions for columns, etc.)
- CallStackToStrings(CallStack, Memo1.Lines, '', Formatter);
- finally
- FreeAndNil(Formatter);
- end;
- end;
- {
- Available build-in formatters for call stack are:
- - TEurekaStackFormatter - general formatter for EurekaLog-style call stack (i.e. fixed-width table with columns) - best to be used in text files
- - TEurekaStackFormatterV6 - backward-compatibility formatter to produce call stack in EurekaLog V6 format (less columns)
- - TSimpleStackFormatter - produces list-like view of call stack (no columns) suitable for variable-width fonts (best to be used in message boxes)
- - TCompactStackFormatter - similar to TSimpleStackFormatter, but produces more compact output with less details (good for quick preview)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement