AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy FTPClient + AS400
Thema durchsuchen
Ansicht
Themen-Optionen

Indy FTPClient + AS400

Ein Thema von chuck · begonnen am 18. Jan 2005 · letzter Beitrag vom 18. Jan 2005
Antwort Antwort
chuck

Registriert seit: 18. Jan 2005
13 Beiträge
 
#1

Indy FTPClient + AS400

  Alt 18. Jan 2005, 09:27
Hallo,

ich habe aktuell ein Problem mit dem Indy FTP Client (Version 10) eine Datei von einer AS 400 auf meinen Rechner zu übertragen. Die Datei wird zwar übertragen und besitzt auch einen Inhalt, dieser ist allerdings in eine Samlung von Symbolen anstelle der Zahlen die eigentlich in der Datei stehen sollten. Ich habe das ganze schon mit einem anderen Transfertyp probiert, allerdings ohne Erfolg. Wie kann ich das Problem jetzt beheben?

Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#2

Re: Indy FTPClient + AS400

  Alt 18. Jan 2005, 11:22
ich glaube nicht das es leute gibt die zu hause eine as400 stehn haben um das nachzubauen was du für ein problem hast, aber wenn die einzelnen zahlen im rahmen von Byte sind (0..255) und du die datei mit nem texteditor geöffnet hast kann es gut möglich sein das die Zahlen halt als Buchstaben/Smileys/Etc dargestellt werden. Schonmal die Datei im Hexeditor geöffnet und geguckt ob die Datei die werte enthält die sie haben soll?
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
beber

Registriert seit: 15. Sep 2004
Ort: Amsterdam
11 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Indy FTPClient + AS400

  Alt 18. Jan 2005, 11:54
Hi,

das liegt vielleicht daran, das das Feld in der DB ein packed field ist.

Guck dir mal das an, das hat uns weitergeholfen.
Google Newsgroup

Gruss
beber
  Mit Zitat antworten Zitat
chuck

Registriert seit: 18. Jan 2005
13 Beiträge
 
#4

Re: Indy FTPClient + AS400

  Alt 18. Jan 2005, 11:59
Erstmal danke für den Tipp, jetzt bin ich schon einen Schritt weiter, wenn auch nicht fertig.

Also, der Inhalt meiner Datei auf der As400 ist
Zitat:
76,000
der Inhalt der Datei
Zitat:
` 
und im Hexeditor
Zitat:
0000 0000 0007 6000 OF ......'..

meine 76 scheinen also noch vorhanden zu sein, auch wenn ich das mangels Hexeditorkenntnisse nicht wirklich rückrechnen.

Jetzt ist natürlich die Frage wie ich das ganze behoben bekomme. Meine aktuelle Idee wäre (mangels anderer bekannten möglichkeiten) die Datei in ein Memo zu laden und das ganze dann mittels irgendeiner mir momentan unbekannten Delphifunktion zurückzurechnen und wieder zu speichern.
  Mit Zitat antworten Zitat
beber

Registriert seit: 15. Sep 2004
Ort: Amsterdam
11 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Indy FTPClient + AS400

  Alt 18. Jan 2005, 12:03
machs nicht zu umstaendlich... wir haben es damit in unserer AS400 loesen koennen. Bekommen alles korrekt in textformat. allerdings ohne seperator...
  Mit Zitat antworten Zitat
chuck

Registriert seit: 18. Jan 2005
13 Beiträge
 
#6

Re: Indy FTPClient + AS400

  Alt 18. Jan 2005, 12:29
Das Problem ist nicht die Daten leserlich von der AS 400 auf den Rechner zu bekommen, dafür haben wir eine Art Maske im Betrieb die das ganze kann, allerdings ist das etwas aufwenig für die Benutzer zu bedienen. Ich will aktuell ein Programm schreiben (mit Delphi 7) das die selbe Aufgabe erfüllt aber wesentlich einfacher zu handhaben ist. Wenn ich den Text richtig verstanden habe führe ich den Query auf der AS aus. Ich weiss allerdings nicht wie ich die As400 nun von Delphi aus ansteuern kann, ich mache es zwar aktuell mit der Indykomponente, weiss aber nicht ob diese mir die Möglichkeit bietet den Query auszuführen. Ausserdem soll das Programm immer nur einzelne Dateien runterladen, nie den ganzen Server.Des weiteren sollte ich noch erwähnen das ich fast überhaupt keine Kenntnisse von der AS400 habe.
  Mit Zitat antworten Zitat
beber

Registriert seit: 15. Sep 2004
Ort: Amsterdam
11 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Indy FTPClient + AS400

  Alt 18. Jan 2005, 12:55
Also wir haben eine query auf der AS400 erstellt, die taeglich einmal laeuft und diese in eine Textdatei ausgibt. Die Textdatei wird mit meinem delphi program per ftp heruntergeladen und dann zeilenweise ausgelesen.
Moechtest du diese daten aus der AS nur lesen, oder auch modifizieren? Es gibt ne delphi componente fuer die AS400 (unter downloads findbar) die recht nett ist. Da kannst du dann auch modifizieren.
Gruss
beber
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#8

Re: Indy FTPClient + AS400

  Alt 18. Jan 2005, 12:57
Könnte es am Zeichensatz liegen ? Die AS/400 verwendet noch den EBCDIC Zeichensatz, der muss erstmal konvertiert werden. Das kannst Du mit dieser Unit machen:

Delphi-Quellcode:
unit ebcdic;

interface

function EBCDICtoASCII(const c: Byte): Byte;
procedure SetInvalid(const c: Byte);

implementation

const
  InvalidTableEntry: Byte = $1A;
  Table: array[0..255] of Byte = ($00,$01,$02,$03,$1A,$09,$1A,$7F,$1A,$1A,$1A,$0B,$0C,$0D,$0E,$0F,
                                  $10,$11,$12,$13,$1A,$1A,$08,$1A,$18,$19,$1A,$1A,$1C,$1D,$1E,$1F,
                                  $1A,$1A,$1A,$1A,$1A,$0A,$17,$1B,$1A,$1A,$1A,$1A,$1A,$05,$06,$07,
                                  $1A,$1A,$16,$1A,$1A,$1A,$1A,$04,$1A,$1A,$1A,$1A,$14,$15,$1A,$1A,
                                  $20,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$5B,$2E,$3C,$28,$2B,$21,
                                  $26,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$5D,$24,$2A,$29,$3B,$5E,
                                  $2D,$2F,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$7C,$2C,$25,$5F,$3E,$3F,
                                  $1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$60,$3A,$23,$40,$27,$3D,$22,
                                  $1A,$61,$62,$63,$64,$65,$66,$67,$68,$69,$1A,$1A,$1A,$1A,$1A,$1A,
                                  $1A,$6A,$6B,$6C,$6D,$6E,$6F,$70,$71,$72,$1A,$1A,$1A,$1A,$1A,$1A,
                                  $1A,$7E,$73,$74,$75,$76,$77,$78,$79,$7A,$1A,$1A,$1A,$1A,$1A,$1A,
                                  $1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,
                                  $7B,$41,$42,$43,$44,$45,$46,$47,$48,$49,$1A,$1A,$1A,$1A,$1A,$1A,
                                  $7D,$4A,$4B,$4C,$4D,$4E,$4F,$50,$51,$52,$1A,$1A,$1A,$1A,$1A,$1A,
                                  $5C,$1A,$53,$54,$55,$56,$57,$58,$59,$5A,$1A,$1A,$1A,$1A,$1A,$1A,
                                  $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$1A,$1A,$1A,$1A,$1A,$1A);
var
   Invalid: BYTE;

function EBCDICtoASCII(const c: Byte): Byte;
begin
 Result := Table[c];

 if Result = InvalidTableEntry Then
   Result := Invalid;

end;

procedure SetInvalid(const c: Byte);
begin
  Invalid := c;
end;

initialization
SetInvalid($20);

end.
Ansonsten empfehle ich Dir Peter Sawatzki's AS/400 dbExpress Komponenten. Damit kannst Du direkt auf die DB2/400 Datenbank zugreifen.

Gruß,
Marcel
Marcel Gascoyne
Der Fehler sitzt immer vor der Tastatur
  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 09:37 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