Étant donné que la compilation d’un gros projet en 64 bits provoque généralement une erreur système IRBB304, il est parfois souhaitable de compiler depuis la ligne de commande. Voilà quelques astuces.
Archives de l’auteur : Jissouille
TdxSpreadSheet creation and filling via code
Basic usage and formatting
procedure TForm1.b1Click(Sender: TObject);
Var xls:TdxSpreadSheet;
sh: TdxSpreadSheetTableView;
begin
xls:=TdxSpreadSheet.Create(Self);
Try
xls.BeginUpdate;
xls.ClearAll;
sh:=TdxSpreadSheetTableView(xls.AddSheet('Bénéficiaires'));
// row,col
if Cells[1,1]=Nil then
CreateCell(1,1);
Cells[Row,Col].AsString:='test';
sh.cells[1,1].Style.Borders[bLeft].Style:=sscbsDouble;
sh.cells[1,1].Style.Borders[bRight].Color:=clred;
sh.Cells[1,1].Style.Brush.BackgroundColor:=clcxLightGray;
sh.Cells[1,1].Style.AlignHorz:=ssahCenter;
sh.Cells[1,1].Style.DataFormat.FormatCode:='dd/mm/yyyy';
sh.Cells[1,1].Style.DataFormat.FormatCode:='# ##0.00';
sh.Cells[1,1].Style.Font.Style:=[fsBold];
// Formula
CreateCell(2,1); // B3
sh.Cells[2,1].SetText('=SUM(B2:B2)',true);
xls.EndUpdate;
xls.SaveToFile('C:\Users\gosane\Desktop\text.xlsx');
Finally
xls.Free;
End;
end;
Helpers
function xlscolname(i:integer):string;
var a,b:integer;
begin
if i<0 then
result:='?'
else if i<26 then
result:=chr(65+i)
else begin
a:=i div 26;
b:=i mod 26;
result:=chr(64+a)+chr(65+b);
end;
end;
Working with TPgDAC (DevArt components for Delphi)
TPgLoader
interface uses DALoader,PgLoader;
Type TMyForm = Class(TForm)
// ...
private
procedure PgLoader1PutData(Sender: TDALoader);
End;
{...}
procedure TFxxx.PgLoader1PutData(Sender: TDALoader);
var i:Integer;
begin
for i:=1 to 10 do
Sender.PutColumnData('fieldname',i,Value);
end;
procedure TFxxx.Import;
Var pgl:TPgLoader;
begin
pgl:=TPgLoader.Create(Application);
Try
pgl.Connection:=DM.PgConnection1;
pgl.TableName:='MyTableName';
pgl.Options.BufferSize:=65536;
// pgl.OnProgress:=LoaderProgress;
pgl.OnPutData:=PgLoader1PutData;
pgl.CreateColumns;
// Remove primary key from PgLoader
for I := 0 to pgl.Columns.Count-1 do
if pgl.Columns[i].Name='idprimarykey' then begin
pgl.Columns.Delete(i);
break;
end;
pgl.Load;
Finally
pgl.Free;
End;
end;
KDE5 – Hints and tips
Autostarting applications
Plasma can autostart applications and run scripts on startup and shutdown. To autostart an application, navigate to System Settings > Startup and Shutdown > Autostart and add the program or shell script of your choice. For applications, a .desktop file will be created, for shell scripts, a symlink will be created.
Note:
Programs can be autostarted on login only, whilst shell scripts can also be run on shutdown or even before Plasma itself starts.
Shell scripts will only be run if they are marked executable.
Place Desktop entries (i.e. .desktop files) here:
~/.config/autostart
: for starting applications at login.
Place or symlink shell scripts in one of the following directories:
~/.config/plasma-workspace/env
: for executing scripts at login before launching Plasma.
~/.config/autostart-scripts
: for executing scripts at login.
~/.config/plasma-workspace/shutdown
: for executing scripts on shutdown.
Source : https://wiki.archlinux.org/index.php/KDE#Autostarting_applications
SSL, Certificats…
Obtenir des infos
Un résumé utile :
openssl x509 -noout -dates -subject -in moncertif.crt
La totale :
openssl x509 -noout -text -in moncertif.crt
Générer une chaîne pour courier-mta
cat moncert.crt intermediaire.crt moncert.key >/etc/courier/moncert.pem
- Ne pas oublier de régler les droits à 600 et de donner le fichier à
daemon
- Regarder dans
mail.log
et pas seulementmail.err
- Redémarrer
courier-mta-ssl
Astuces Delphi
Déclencher une action au démarrage de l’application
procedure TFMain.FormShow(Sender: TObject);
begin
PostMessage(Button1.Handle,WM_LBUTTONDOWN,0,0);
PostMessage(Button1.Handle,WM_LBUTTONUP,0,0);
end;
Créer des listes d’objets avec TObjectList
uses Contnrs;
Dans l’interface :
TSQLColumn = Class
name : string;
typ : string;
// ...autres champs...
End;
TSqlColumnList = class(TObjectList)
private
function GetItem(Index: Integer): TSQLColumn;
procedure SetItem(Index: Integer; const Value: TSQLColumn);
public
property Items[Index: Integer]: TSQLColumn read GetItem write SetItem; default;
end;
Dans l’implémentation :
{ TSqlColumnList }
function TSqlColumnList.GetItem(Index: Integer): TSQLColumn;
begin
Result:=TSqlColumn(inherited GetItem(Index));
end;
procedure TSqlColumnList.SetItem(Index: Integer; const Value: TSQLColumn);
begin
inherited setItem(index, value);
end;
Utilisation :
TMyClass = Class
FColumns : TSqlColumnList;
Constructor Create;
Destructor Destroy; reintroduce;
End;
{ TcatRequete }
constructor TcatRequete.Create;
begin
FColumns := TSqlColumnList.Create;
end;
destructor TcatRequete.Destroy;
begin
FColumns.Free;
end;
Et pour remplir la liste :
Var column : TSqlColumn;
begin
FColumns.Clear;
// Ajouter un élément
column:=TSqlColumn.Create;
FColumns.Add(Column);
With column do begin
name := 'xxx';
end;
end;
HOW-TOs externes
Plutôt que de les garder dans mes onglets ouverts, autant qu’ils servent à tout le monde
Remplacer nullmailer par courier-mta
Sur le papier, nullmailer
semble être un bon petit MTA minimaliste. Dans les faits, c’est une galère : on ne sait jamais quel(s) fichier(s) configurer, les messages d’erreur ne sont pas explicites et récemment, ils se sont mis à envoyer tous les mails en 5 exemplaires. Donc remplacement par courier-mta
qui est peut-être un poil plus lourd mais qui marche bien.
Windows 7 – After install
Je passe mon environnement de développement à Windows 7 pour bénéficier des 64bits. Liste de trucs à faire pour nettoyer, accélérer cette chose et la rendre utilisable.
Désactiver la proposition « Windows 10 »
- Windows update
- Mises à jour installée
- Rechercher la KB3035583 (voir ici)
- La désinstaller
- Rechercher les mises à jour
- Elle est de nouveau là (dans les facultatives à l’heure où j’écris) : clic droit + Masquer la mise à jour
Désactiver le « défilement régulier »
- Panneau de configuration
- Système
- Paramètres système avancés
- Performances -> Paramètres
- Décocher « Animer les contrôles et les éléments à l’intérieur des fenêtres » et « Faire défiler régulièrement la zone de liste »
Autoconnexion d’un utilisateur
- netplwiz
- décocher « Les utilisateurs doivent entrer un mot de passe »
- choisir l’utilisateur à connecter
- Appliquer
- Saisir l’éventuel mot de passe
DevExpress tips
My own tips using DevExpress products