Einzelnen Beitrag anzeigen

beginnerXE1

Registriert seit: 22. Dez 2020
10 Beiträge
 
#9

AW: Neue IDE, alter Quellcode, Access Violation

  Alt 23. Dez 2020, 18:32
Erneut vielen Dank für eure Antworten.

> Es gibt oftmals auch ältere Versionen zu kaufen. (eBay und so)
Also die Version neu im Shop ist für mich als Privatperson dann doch zu teuer, vor allem für meinen Anwendungszweck. Neben der kleinen JSON-String-Anpassung gäbe es zwar noch 1-2 Kleinigkeiten, aber den Preis rechtfertigt es für mich dann leider nicht. Dazu funktioniert die Lösung mit Zwischenschritt zu gut. Im Forum hatte ich schon nachgelesen, dass ältere Lizenzen nur geringfügig im Preis verlieren und in einer kurzen Suche bei ebay.de/com nichts direkt gefunden. Aber ich habe noch 1-2 Hoffnungen, die ich ansprechen kann. Ich möchte euch natürlich auch nicht zu viel Zeit kosten, nur weil die Software recht alt ist, ich kaum Ahnung von der Materie habe und für 2-3 Zeichen keine Unsummen ausgeben möchte.

> Hast du bisher nur das Plugin neu kompiliert oder auch das Hauptprogramm
Bisher nur das Plugin, das Hauptprogramm + IDE stellt mich noch vor andere Probleme und da man die Plugins theoretisch einfach austauschen kann, wollte ich damit anfangen.

>Also klassische DLl mit Exports oder Com-Klassen
Ich nehme mal an Exports:
Delphi-Quellcode:
function LoadPlugin(var plugin: interface): WordBool; safecall; export;
begin
  try
    plugin := TGoogleCh.Create;
    Result := True;
  except
    Result := False;
  end;
end;

exports LoadPlugin name 'LoadPlugIn';
Durch die Debug-Anleitung, danke himitsu, ist das Programm früher als ich dachte gecrashed. Habe es über Rad Studio gestartet und ein paar Projekteinstellungen angepasst, aber lief dann auch.
Delphi-Quellcode:
unit uGoogleCH;

interface

uses
  // Delphi
  Windows, SysUtils,
  // RegEx
  RegExpr,
  // HTTP + Plugin
  ....
type
  TGoogleCH = class(TSearchPlugin)
  protected { . }
  const
    SITE: string = 'http://google.ch';
    // ...
  public
    function GetName: WideString; override;

    { ...sinnvolle Funktionen, die ich zur Einfachheit ignoriere...; } override;
  end;
  
  function TGoogleCH.GetName: WideString;
  begin
    Result := 'Google.ch'; // Breakpoint, 3x Einzelschritt F7 ab hier und es crashed: access violation
  end;
Ich habe bei allen Funktionen einen Breakpoint in die erste Zeile gesetzt. Der erste Haltepunkt wurde bei GetName ausgelöst, was für mich sinnvoll erscheint. 3x F7 gedrückt, also drei Schritte weiter das Programm crashed. Leider habe ich ja bisher nur Plugins als Quellcode-Projekte laden können, sodass ich (noch) nicht exakt sagen kann, was der genaue Aufruf ist. Ich versuche mich noch ein bisschen daran, mehr Quellcode in das RAD Studio laden zu können, vielleicht komme ich dann schon weiter.
  Mit Zitat antworten Zitat