AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RPC und Delphi 2009

Ein Thema von alphaflight83 · begonnen am 21. Apr 2009 · letzter Beitrag vom 1. Jul 2009
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#1

RPC und Delphi 2009

  Alt 21. Apr 2009, 11:58
Tag auch,

ich hätte auch mal wieder ein Problem.
Ich hatte ein Delphi 7 Programm, das einige XML-RPC Funktionen verwendet hat.
( aus xmlrpctypes, xmlrpcclient)
RpcCaller : TRpcCaller;
RpcFunction : IRpcFunction;
RpcResult : IRpcResult;

Nun läuft die Version 2.0 von XML-RPC nicht mehr mit Delphi 2009 auf die ich nun umstelle,
was mich zu der Frage bringt, welche Vorgehensweise hier am sinnvollsten ist:
1. Auf andere Komponenten wechseln und wenn ja welche, oder
2. Die XML-RPC versuchen in Gang zu bringen

Wäre schön, wenn mir jemand weiterhelfen könnte.

Gruß
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 12:00
Zitat:
Nun läuft die Version 2.0 von XML-RPC nicht mehr mit Delphi 2009 auf die ich nun umstelle,
Wie äussert sich das?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#3

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 13:19
Nunja, wenn ich die XML-RPC mit D2009 verwenden will nehme ich an, dass ich die auch damit kompilieren muss.
Beim kompiliervorgang kommen dann aber zahlreiche Fehler, die wohl mit der Umstellung auf Utf8 zusammenhängen.
Jetzt gings mir eben darum, ob es hier eine Aktualisierung gibt, ob das mittlerweile sowieso alles anders gemacht wird,
oder ob ich mich einfach zu dumm anstelle.
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 13:24
Dann zeig doch mal die Fehlermeldungen
Markus Kinzler
  Mit Zitat antworten Zitat
mjustin

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

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 13:28
Zitat von alphaflight83:
Tag auch,

ich hätte auch mal wieder ein Problem.
Ich hatte ein Delphi 7 Programm, das einige XML-RPC Funktionen verwendet hat.
( aus xmlrpctypes, xmlrpcclient)
RpcCaller : TRpcCaller;
RpcFunction : IRpcFunction;
RpcResult : IRpcResult;

Nun läuft die Version 2.0 von XML-RPC nicht mehr mit Delphi 2009 auf die ich nun umstelle,
was mich zu der Frage bringt, welche Vorgehensweise hier am sinnvollsten ist:
1. Auf andere Komponenten wechseln und wenn ja welche, oder
2. Die XML-RPC versuchen in Gang zu bringen

Wäre schön, wenn mir jemand weiterhelfen könnte.

Gruß
Hier sind zwei Kandidaten:

REMObjects SDK- http://www.remobjects.com/ro.aspx
Pros:
Free .NET client (great for calling Delphi from ASP)
SOAP server
FreePascal support
XMLRPC

RealThinClient- http://www.realthinclient.com
Pros:
Extemely flexible
FreePascal support
XMLRPC

(zitiert aus: https://forums.codegear.com/message....essageID=84775)
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#6

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 13:37
Nuja, zum Beispiel tritt in dieser Funktion ein E2010: Inkompatible Typen - Fehler auf.

Delphi-Quellcode:
FUNCTION Utf8ToAnsi (Source : STRING; UnknownChar : CHAR = '¿') : ANSISTRING; // <- Result: AnsiString
          (* Converts the given UTF-8 String to Windows ANSI (Win-1252).
             If a character can not be converted, the "UnknownChar" is inserted. *)

VAR
  SourceLen : INTEGER; // Length of Source string
  I, K : INTEGER;
  A : BYTE; // Current ANSI character value
  U : WORD;
  Ch : CHAR; // Dest char
  Len : INTEGER; // Current real length of "Result" string
BEGIN
  SourceLen := Length (Source);
  SetLength (Result, SourceLen); // Enough room to live
  Len := 0;
  I := 1;
  WHILE I <= SourceLen DO BEGIN
    A := ORD (Source [I]);
    IF A < $80 THEN BEGIN // Range $0000..$007F
      INC (Len);
      Result [Len] := Source [I]; // ---> Fehlermeldung: E2010: Inkompatible Typen: AnsiChar und Char (Source : String, Result : AnsiString)
      INC (I);
      END
    ELSE BEGIN // Determine U, Inc I
      IF (A AND $E0 = $C0) AND (I < SourceLen) THEN BEGIN // Range $0080..$07FF
        U := (WORD (A AND $1F) SHL 6) OR (ORD (Source [I+1]) AND $3F);
        INC (I, 2);
        END
      ELSE IF (A AND $F0 = $E0) AND (I < SourceLen-1) THEN BEGIN // Range $0800..$FFFF
        U := (WORD (A AND $0F) SHL 12) OR
             (WORD (ORD (Source [I+1]) AND $3F) SHL 6) OR
             ( ORD (Source [I+2]) AND $3F);
        INC (I, 3);
        END
      ELSE BEGIN // Unknown/unsupported
        INC (I);
        FOR K := 7 DOWNTO 0 DO
          IF A AND (1 SHL K) = 0 THEN BEGIN
            INC (I, (A SHR (K+1))-1);
            BREAK;
            END;
        U := WIN1252_UNICODE [ORD (UnknownChar)];
        END;
      Ch := UnknownChar; // Retrieve ANSI char
      FOR A := $00 TO $FF DO
        IF WIN1252_UNICODE [A] = U THEN BEGIN
          Ch := CHR (A);
          BREAK;
          END;
      INC (Len);
      Result [Len] := Ch; // ---> Fehlermeldung: E2010: Inkompatible Typen: AnsiChar und Char (Ch : Char , Result : AnsiString)
      END;
    END;
  SetLength (Result, Len);
END;
Hier stellt sich nun die Frage, ob man die Funktionen (gibts auch rückwärts, die ist aber fehlerfrei)
überhaupt noch benötigt.
Hab mich mit dem Code noch nicht eingehend befasst, wollte das eben auch möglichst vermeiden.
Aber anscheinend sind alle Äpfel sauer, in die ich hier beissen kann.

@mjustin: Danke mal für die Alternativen
Allerdings kommen beide für mich nicht in Frage, da der Einsatz sich auf einige wenige Zugriffe beschränkt und der Preis somit
kaum zu rechtfertigen ist.
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 14:15
String / Char -> Ansistring/AnsiChar
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#8

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 14:38
Wenn das alles wäre, wäre mir das schon klar. Mir geht es aber eher darum ob das Gesamtkonzept in dieser Form noch funktioniert.
Wenn ich einen Char hier mit einem AnsiChar ersetze, zieht sich das wie ein Rattenschwanz durch den ganzen Code.
Der Aufwand den kompletten XML-RPC Code zu durchforsten wird dann doch relativ groß.
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
mjustin

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

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 15:29
Zitat von alphaflight83:
Wenn das alles wäre, wäre mir das schon klar. Mir geht es aber eher darum ob das Gesamtkonzept in dieser Form noch funktioniert.
Wenn ich einen Char hier mit einem AnsiChar ersetze, zieht sich das wie ein Rattenschwanz durch den ganzen Code.
Der Aufwand den kompletten XML-RPC Code zu durchforsten wird dann doch relativ groß.
Alternativ könnte man auch AnsiString überall mit "string" ersetzen, ausser da, wo ein UTf-8 String benötigt wird. Den kann man z.B. mit Utf8Encode / Utf8Decode konvertieren, und die gepostete Funktion ist damit ersetzbar.

Aber das mit dem Rattenschwanz stimmt schon ...
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#10

Re: RPC und Delphi 2009

  Alt 21. Apr 2009, 16:48
Okay, hab mich jetzt mal an den Rattenschwanz gewagt und fröhlich Ansis erschlagen.
Hänge nun aber an einem Punkt in der Datei XmlRpcClient an dem die Funktion
Delphi-Quellcode:
HashMessageDigest := TIdHashMessageDigest5.Create;
  try
    { determine the md5 digest hash of the request }
    Hash := Hash128AsHex(HashMessageDigest.HashValue(XmlRequest)); // <-
aufgerufen wird.
Jetzt bin ich mir nicht ganz sicher ob ich mich hier schon verrant habe.
Eine Methode Hashvalue konnte ich in HashMessageDigest samt aller Mutter, Grußmutter ... -Klassen nicht finden.
Mit allen anderen vorhandenen Methoden hauts auch nicht hin.
Hash128ToHex will einen Übergabewert vom Typ T4x4LongWordRecord.
Aus Indy's IdHashMessageDigest: T4x4LongWordRecord = array[0..3] of LongWord; Das einzige Attribut das diesen Typ aufweist ist FState in der Mutterklasse TIdHashMessageDigest4 und liegt protected vor.

Edit: HashValue gibt es allerdings in den Klassen TIdHash16 und TIdHash32 die genau wie die TIdHashMessageDigests von TIdHash erben ...
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 05:23 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