Schlagwort-Archive: Jedi

Syntax Highlighting in eigene Anwendungen integrieren – TJvHLEditor

Seit einigen Monaten gibt es für eine unserer Anwendungen den Feature-Request „Memo mit Syntax Highlighting implementieren“. Bisherige Lösungsansätze wurden meist aus Zeitgründen nicht weiter verfolgt. Rein zufällig bin ich vor kurzem über die Jedi Komponente TJvHLEditor gestoßen. Diese ist absolut simpel zu benutzen. Einfach aufs Formular setzen, den Parser bzw. Highlighter einstellen und fertig. Vorgefertigt gibt es z.B. Highlighter für Pascal, SQL, Java und PHP. Weiterlesen

Do not use „indent“ while generating XML files

For XML reading and writing I use the component TJvSimpleXML from the JediVCL library. The component has an option sxoAutoIndent for saving the XML content to string/file. This will add blanks to the output XML to generate a file which can be (good) read by humans. Example:

<XML>
  <ITEMS>
    <ITEM1>value1</ITEM1>
    <ITEM2>value2</ITEM2>
    <ITEM3>value3</ITEM3>
  </ITEMS>
</XML>

But the generated file is much larger. I had an input XML without indent which is 42 MB. After processing and saving the size is 127 MB! Just because blanks were added. If You generate files only for machine processing do not use indents. The needed HDD/RAM space is lower and the processing time increase.

Example without indent:

<XML>
<ITEMS>
<ITEM1>value1</ITEM1>
<ITEM2>value2</ITEM2>
<ITEM3>value3</ITEM3>
</ITEMS>
</XML>

How to exception logging at runtime

For exception logging You can use the TJvDebugHandler component from the JVCL. Just drop the component on the main form, set the LogFileName to a writable filename (do not use ExtractFilePath(Application.ExeName) + ‚\MyLog.txt‘) and enable logging by setting the LogToFile property to true. If You want a detailed log file / stack trace You have to insert the following lines at the beginning of Your dpr file.

// JCL_DEBUG_EXPERT_GENERATEJDBG ON
// JCL_DEBUG_EXPERT_INSERTJDBG ON
// JCL_DEBUG_EXPERT_DELETEMAPFILE ON

Yes, the lines are comments. Weiterlesen

Gefunden – Interface von TStringList

Fast immer wenn ich in einer Funktion oder Klasse eine TStringList oder eine Variable von TStrings anlege und anfange

s := TStringList.Create;
try
  s.Add('');
  ...
finally
  s.Free;
end;

zu schreiben, frage ich mich ob es nicht ein Interface von TStrings gibt. Die ersten 10 – 15 Einträge einer bekannten Suchmaschine haben nichts sinnvolles ergeben. Eher Diskussionen über Sinn oder Unsinn alles über Interfaces zu realisieren. Die Idee es selbst zu implementieren habe ich nicht weiter verfolgt. Rein zufällig, beim Durchforsten der JCL, habe ich in der Unit „JclStringLists“ ein IJclStringList – Interface gefunden. Weiterlesen