Delphi-Programmierung

Delphi - TWebBrowser: Seite mit Javascript anzeigen

Eine einfache Seite lässt sich mit dem von Delphi mitgelieferten TWebBrowser anzeigen, aber bei einer Seite die Javascript nachlädt, wurde nur die Überschrift angezeigt.

  1. Umstellen der embeddedWebbrow­serMode auf 11001
  2. Damit der nachzulandende Code nicht gesperrt wid, die entsprechende Domain in der TrustedZone eintragen

Für Indy .p12 zu .pem wandeln

Literatur

Zur Beachtung Unter Delphi 2009 funktioniert die unten angegebene Funktion testCert zwar, aber der Zugriff auf einen anderen Server lieferte nur 403 Forbidden. Unter Delphi 10 Tokyo funktioniert der Zugriff immer.

  • Delphi 2009: Indy version: 10.2.5
  • Delphi 10.2: Indy version: 10.6.2.5366

Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM

openssl pkcs12 -in zugang.p12 -out zugang.pem -nodes

in Delphi

  • me ist vom Typ TMemo
uses
  SysUtils, Classes, Forms, IdHTTP, IdSSLOpenSSL, idGlobal,
   Controls, ComCtrls, ToolWin, StdCtrls;

function TForm1.testCert: boolean;
var IdHTTP1 : TIdHTTP;
    Id_HandlerSocket : TIdSSLIOHandlerSocketOpenSSL;
    cert:string;
    s : string;
begin
    try
      me.Clear;
      IdHTTP1 := TIdHTTP.Create( self );
      IdHTTP1.Request.BasicAuthentication := False;
      IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
      Id_HandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create( IdHTTP1 );
      cert := 'zugang.pem';
      Id_HandlerSocket.SSLOptions.CertFile := cert; (* PEM contain both CERT and Key *)
      Id_HandlerSocket.SSLOptions.KeyFile := cert;

      Id_HandlerSocket.SSLOptions.Mode := sslmClient;
      Id_HandlerSocket.SSLOptions.Method := sslvSSLv23;
      IdHTTP1.IOHandler := Id_HandlerSocket;

      me.Add( Id_HandlerSocket.SSLOptions.CertFile );

      s := IdHTTP1.Get( 'https://www.scriptjunkie.us/auth/verifycert' );

      me.Add( s );
      Result:=True;

    finally
      Id_HandlerSocket.Free;
      IdHTTP1.Free;
    end;
end;

Delphi IDE

Bei mir sind in der Delphi IDE (Delphi Seattle) seit einiger Zeit die Funktionalitäten von Datei/Öffnen und Datei/Beenden vertauscht.

Hier fand ich eine Erklärung des Phänomen

https://forums.embarcadero.com/thread.jspa?…


The File/Open and File/Exit actions have been swapped. That is a known issue related to the IDE's copy protection:

Action event handlers for the File|Open and File|Exit menu handlers are swapped

This happens when any non-Embarcadero files have been placed in the IDE's \bin folder, where they do not belong. Only official Embarcadero files are allowed in that folder.

This issue has existed since at least XE6, and someone always manages to encounter it in each new release.


Die Borland Dlls haben bei mir den Zeitstempel 27.08.2015 00:55 Eine Fremd-Dll habe ich gefunden und entfernt. Jetzt funktioniert die Delphi-IDE wieder.

Delphi beliebte Fehler: TfrxReport -TfrxMasterData

In meinem Programm erstelle iche eine TfrxMasterData und trage dazu einige TfrxMemoView ein. Obwohl im Workspace alles richtig angezeigt wurde, waren die TfrxMemoView nicht dem TfrxMasterData zugeordnet,

Falsch default alt. text

Der Fehler lag darin, dass ich der TfrxMasterData keine Weite zugeodnet hatte. So wurde die TfrxMasterData zwar im Workspace richtig angezeigt, aber die TfrxMemoView konnten einer TfrxMasterData nicht zugeordnet werden.

function TfmEinfacherFastReportDesigner.EinfacheTabelle_Masterdata(
  aPage: TfrxReportPage; var aTop, aHeight: extended): TfrxMasterData;
begin
  Result := TfrxMasterData.Create(aPage);
  Result.CreateUniqueName;
  Result.Left:=0;
  Result.Width := 750; //Width darf nicht 0 sein.
  Result.Top := aTop;
  Result.Height := aHeight;
  Result.DataSet := dsTabelle;
end;

Richtig default alt. text

Delphi 10 - Icon fehlt

Mein Projekt konnte ich (fast) ohne Schwierigkeiten von Delphi 2009 nach Delphi 10 umsetzen. Nur fehlten plötzlich in den Formularen das Icon in der oberen linken Ecke.

default alt. text

Die Fehlersuche war aufwändig aber von Erfolg gekrönt.

In einer RES-Datei einer meiner selbst geschriebenen Komponenten war neben den BITMAPs auch ein verstümmelter Eintrag für ein ICON.

Mit Hilfe des Tools Resourcehacker konnte ich die RES-Datei reparieren.

  • Action – „Save Bitmap-Group to a RES-File“
default alt. text

Delphi beliebte Fehler: Delphi 10 - Debugging funktioniert nicht

Das ist aber eine böse Falle für Umsteiger von Delphi 2009 auf Delphi 10 Seattle:

Wenn das Programm in der IDE mit dem grünen Pfeil gestartet wird, sollte man vorher den Hinweis lesen „Ohne Debugger ausführen“.

Um das Programm in der IDE mit Debugger zu starten die Taste F9 benutzen oder diesen Schalter

default alt. text

Delphi beliebte Fehler: Grid auf einem Formular erhält nicht den Focus

Das Problem:

Ein Eingabedialog wird mit Showmodal aufgerufen und das Grid im Eingabedialog erhält nicht den Fokus und ist auch mit der Maus nicht anklickbar.

Die Lösung

Schuld war der Aufruf des Eingabedialogs im Hauptformular der Anwendung bereits im OnFormActivate Ereignis, ohne der Anwendung Zeit zu geben alle bis dahin anstehenden Ereignisse abzuarbeiten.

procedure Tam_Main.FormActivate(Sender: TObject);
begin
  // Der Anwendung Zeit geben, alle bisher anstehenden Ereignisse abzuarbeiten.
  Application.ProcessMessages;
  am_Eingabe.Execute;
end;

Delphi beliebte Fehler: "Ungültige Zeigeroperation" bei Close eines Forms

Beim Schließen eine Formulars, an dem ich schon seit Monaten keine Änderungen vorgenommen hatte, gab es plötzlich eine Schutzrechtsver­letzung.

Nach mehreren Stunden Suche habe ich den Fehler gefunden.

Auf dem Formular gibt es eine TpFIBDataSet. Zu dieser TpFIBDataSet hatte ich neben anderen Feldern ein TStringField zugewiesen. (Weiß der Geier warum ich das mal gemacht hatte.) Nach einem Update der FIB-Komponenten auf die Version 7.51.2676 wurde das TStringfield beim Schließen des Formulars nicht mehr mit freigegeben und verursachte den Fehler „Ungültige Zeigeroperation“.

Abhilfe: Das Feld löschen und als TFIBStringfield wieder anlegen.

Seiten