AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE bds2006 update indy10 requires system.windows.forms.dcp
Thema durchsuchen
Ansicht
Themen-Optionen

bds2006 update indy10 requires system.windows.forms.dcp

Ein Thema von cramer · begonnen am 22. Sep 2014 · letzter Beitrag vom 25. Sep 2014
Antwort Antwort
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#1

bds2006 update indy10 requires system.windows.forms.dcp

  Alt 22. Sep 2014, 16:05
Hallo,

ich bekomme beim Verbindungsaufbau zu einer https Seite mit Indy 10.1.5 immer den Fehler "Could not load SSL library."
Die dlls liegen aber auffindbar im Ordner der EXE Datei.
Ursache ist da wohl die originale header Datei.

Ich wollte dann die Header Datei und dlls mal aktualisieren gem. diesem Beitrag:
http://www.delphipraxis.net/93395-in...-0-9-8e-2.html
Code:
Indy OpenSSL 0.9.8h Patch
03. Juni 2008
Copyright (c) 2008 digivendo GmbH, Arvid Winkelsdorf

- Für die Benutzung mit den vorinstallierten Indy Versionen von Delphi
  (Indy 9 / Indy 10) bis D2007

  benennen Sie die originale Datei IdSSLOpenSSLHeader.pas im Verzeichnis
  Indy\lib\Protocols um - z.B. in IdSSLOpenSSLHeader.original.pas -
  und kopieren Sie die neue IdSSLOpenSSLHeaders.pas in das
  Indy\lib\Protocols Verzeichnis
Wenn ich dann das Indy compilieren will, gibt es :
[Pascal Fatal Error] IndyProtocols.dpk(29): E2202 Required package 'System.Windows.Forms' not found.

Trotz googelei, finde ich keine Lösung
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: bds2006 update indy10 requires system.windows.forms.dcp

  Alt 22. Sep 2014, 16:14
Diese Indy-Version wurde einfach nur für neuere Delphi-Versionen erstellt.
Inzwischen wurden die delphieigenen Units/Packages mit immer mehr Namespaces versehen.
z.B. die heißt die SysUtils.pas nun System.SysUtils.pas

Vermutlich wird das System.Windows.Forms bei dir noch Windows.Forms oder so ähnlich heißen.
Du müsstest also im Packages IndyProtocols.dpk die Abhängigkeiten anpassen, auf die Namen, wie sie bei dir noch heißen.

Abhängigkeiten = das "Require" in der DPK (QuellCode), bzw. in der Projektverwaltung
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

AW: bds2006 update indy10 requires system.windows.forms.dcp

  Alt 22. Sep 2014, 16:47
Trotz googelei, finde ich keine Lösung
Indy 10.6 sollte noch mit alten Versionen bis Delphi 5 funktionieren (ich verwende die aktuelle Version noch mit Delphi 6).

Möglicherweise ist die alte Version nicht richtig deinstalliert ...

Anstatt eines Patchs würde ich empfehlen, Indy komplett ohne Packageinstallation zu verwenden. Dazu die Pfade Lib/Core, Lib/Protocols und Lib/System in den Suchpfad des Projekts einbinden.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#4

AW: bds2006 update indy10 requires system.windows.forms.dcp

  Alt 22. Sep 2014, 18:39
Hi, danke für die Hinweise.

Diese Indy-Version wurde einfach nur für neuere Delphi-Versionen erstellt.
Inzwischen wurden die delphieigenen Units/Packages mit immer mehr Namespaces versehen.
z.B. die heißt die SysUtils.pas nun System.SysUtils.pas
Vermutlich wird das System.Windows.Forms bei dir noch Windows.Forms oder so ähnlich heißen.
Du müsstest also im Packages IndyProtocols.dpk die Abhängigkeiten anpassen, auf die Namen, wie sie bei dir noch heißen.
Abhängigkeiten = das "Require" in der DPK (QuellCode), bzw. in der Projektverwaltung

Aber ich habe doch nur die IdSSLOpenSSLHeaders.pas genommen, die DPK mit dem "requires" ist noch identisch mit der Originalen von der DVD
\install\program files\borland\bds\4.0\source\indy10\protocols\Indy Protocols.dpk
Code:
requires
  System.Windows.Forms,
  Borland.Delphi,
  Borland.VclRtl,
  IndySystem,
  IndyCore;
Indy 10.6 sollte noch mit alten Versionen bis Delphi 5 funktionieren (ich verwende die aktuelle Version noch mit Delphi 6).
Möglicherweise ist die alte Version nicht richtig deinstalliert ...
Anstatt eines Patchs würde ich empfehlen, Indy komplett ohne Packageinstallation zu verwenden. Dazu die Pfade Lib/Core, Lib/Protocols und Lib/System in den Suchpfad des Projekts einbinden.
Bedeutet wie folgt verfahren?
Code:
1.
alle Verweise in der IDE auf den Ordner "C:\Programme\Borland\BDS\4.0\lib\Indy10" mit den DCUs rauswerfen.
2.
"Indy10 — Revision 5187: /tags/Indy 10.6.0 - XE4 RTM/Lib" runterladen und z.B. in
den Ordner "C:\Programme\Indy10\lib" kopieren
3.
Folgende Pfade dann in der IDE unter "Tools_Options_Environment-Options_Delphi-Options_Library-Win32_Library path" eintragen.
"C:\Programme\Indy10\lib\core"
"C:\Programme\Indy10\lib\protocols"
"C:\Programme\Indy10\lib\system"
und das funktioniert auch mit den vohandenen Komponenten in den Formularen
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: bds2006 update indy10 requires system.windows.forms.dcp

  Alt 22. Sep 2014, 19:05
Bedeutet wie folgt verfahren?
Code:
1.
alle Verweise in der IDE auf den Ordner "C:\Programme\Borland\BDS\4.0\lib\Indy10" mit den DCUs rauswerfen.
2.
"Indy10 — Revision 5187: /tags/Indy 10.6.0 - XE4 RTM/Lib" runterladen und z.B. in
den Ordner "C:\Programme\Indy10\lib" kopieren
3.
Folgende Pfade dann in der IDE unter "Tools_Options_Environment-Options_Delphi-Options_Library-Win32_Library path" eintragen.
"C:\Programme\Indy10\lib\core"
"C:\Programme\Indy10\lib\protocols"
"C:\Programme\Indy10\lib\system"
und das funktioniert auch mit den vohandenen Komponenten in den Formularen
Fast!

1. - Alles was da ist kann da bleiben. Die bestehende Package-Installation sollte man nur anfassen wenn man sehr viel Zeit hat, denn wenn etwas anschliessend nicht mehr zusammenpasst muss alles rückgängig gemacht werden. Mein Vorschlag, die neue Indy Version nur projektlokal zu konfigurieren, ist sicherer und zeitsparend, da keine Packages installiert werden.
2. - Trunk ist aktuell 5187, warum die unter dem XE4 Tag steht ist mir unbekannt. Neueste Version herunterladen, und Changelog lesen. (Indy ist nie "stable", auch die XE Release-Versionen können buggy sein, und nach der Veröffentlichung werden dann gemeldete Bugs im Trunk gefixt, nie im Tag).
3. - Wenn man die Pfade nur als Suchpfad in dem Projekt hinterlegt, in dem man die neuen Indy Versionen testen will, braucht man den Library Path nicht anzufassen. Vorteil: alle anderen Projekte arbeiten wie bisher mit den installierten Packages.

Wenn man bereits Komponenten in Formularen und Datenmodulen platziert hat, kann dies unter Umständen dennoch funktionieren: die Komponenten greifen zur Designzeit auf die Packages zurückt, kompilieren kann man die Anwendung dann aber gegen die neue Indy Version (ausser beim Einsatz von Laufzeit-Packages). Nur wenn man Methoden benutzt, deren API sich geändert hat, wird es Probleme geben. Ich verwende daher GExperts und wandle damit die Komponenten in Sourcecode um. Dadurch kann man sehr viel einfacher - ohne Package-Installationshölle - auf andere Indy Versionen switchen, wenn man mit der verwendeten auf einen Bug stößt und auf eine ältere wechseln will.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#6

AW: bds2006 update indy10 requires system.windows.forms.dcp

  Alt 24. Sep 2014, 09:34
Super, danke für die Tips.

1. + 3 - Habe ich so gemacht, klappt prima, nur an 4 Stellen im Programm musste eine SMTP Constante angepasst werden.
2. - Trunk ich habe die 5188

Wohl war Zitat "Package-Installationshölle"

Problem ist nur, das ich trotz Beachtung des Hinweise immer noch den Fehler habe:

"Could not load SSL library"

Hinweis:
Mit dem letzten Indy Trunk (10.2.3) oder dem Source aus dem Indy SVN werden die Indy OpenSSL DLLs nicht länger benötigt.
In diesem Fall verwenden Sie die DLLs aus dem Verzeichnis "openssl-0.9.8h - DLLs - Default - Win32".
Die neuen Headerfiles dürfen dann auch nicht verwendet werden.
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: bds2006 update indy10 requires system.windows.forms.dcp

  Alt 24. Sep 2014, 10:38
.. ich weiß nicht ob es schon angesprochen wurde..
Deine Applikation ist eine 32bit Applikation, dann solten auch die ssl DLLs die 32bit Version sein.
Hast Du eine 64bit Applikation, dann musst Du die 64bit ssl DLLs verwenden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: bds2006 update indy10 requires system.windows.forms.dcp

  Alt 24. Sep 2014, 14:35
"Could not load SSL library"
Die aktuellen SSL DLLs sind hier zu finden:

http://indy.fulgan.com/SSL/

Aktuell zur Zeit ist die Version 1.0.1i vom 8. August 2014

Damit sollte es auf Anhieb funktionieren. Warum die 0.9.X und die 1.0.X DLLs nicht kompatibel sind kann ich leider nicht erklären (API Änderungen?).

Man kann über eine Indy Methode (WhichFailedToLoad in Unit IdSSLOpenSSLHeaders) jedoch beim Scheitern des DLL Ladens etwas mehr Informationen erhalten.

Beispiel (von Stackoverflow):

Delphi-Quellcode:
procedure TForm32.Button1Click(Sender: TObject);
var
  output: TMemoryStream;
begin
  output := TMemoryStream.Create;
  try
    IdHTTP.Get('https://localhost:444/Folder/service.svc', output);
    output.Position := 0;
    Memo1.Lines.LoadFromStream(output);
  except
    on E: Exception do
    begin
      ShowMessage(WhichFailedToLoad);
    end;
  end;
end;

Hope this helps,
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#9

AW: bds2006 update indy10 requires system.windows.forms.dcp

  Alt 25. Sep 2014, 13:01
Danke,

WhichFailedToLoad hatte jede Menge kryptisches Zeug angemeckert.

Nach dem Update auf die 1.0.1i dlls ist
. 1. der Fehler "Could not load SSL library." weg und
. 2. WichFailedToLoad meckert nix mehr an.

Hatte dann noch eine "privileged instruction" exeption.
Der Fehler ist jetzt aber auch weg, nachdem ich noch die
. 1. TIdHTTP und
. 2. TIdAntiFreeze
per GExperts "ComponentsToCode" aus der "Package Hölle " befreit habe.

Nun habe ich nur noch ein paar OnXxxx Ereignisse, die nicht mehr kompatibel sind.
Code:
//OnStatusInfo := IdSSLIOHandlerSocket1StatusInfo;
//OnWork      := HTTPWork;
//OnWorkBegin := HTTPWorkBegin;
Wie bekommt man denn jetzt ohne Visuelle Komponente die richtigen Proceduren mit den entsprechenden Parametern raus
Okay, habs gefunden, die Events aus den Indy Quellcodes raussuchen und entsprechend anpassen.
alte Parameter "... const AWorkCount : integer);"
neue Parameter "... AWorkCount : int64);"
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.

Geändert von cramer (25. Sep 2014 um 13:20 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz