Stream zu Hexadezimal
spacer
Autor Nachricht
LittleBen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 166

Win 7, Mac OS
Delphi 7
BeitragVerfasst: So 18.09.11 02:07 
Hallo,
ich habe ein Memory-Stream, der als Argument in einer URL dienen soll. Das heißt: www.test.de/verarbeiten.php?einstream=derstream.
Da kam ich auf die Idee, den Stream einfach in eine hexadezimale (oder binäre?) Zahl zu wandeln und diese dann als Argument zu benutzen (später dann wieder umwandeln). Nun stellen sich die Fragen, ob das funktioniert und wenn ja, wie? Oder ob es eine andere Methode gibt, einen Stream als Argument für eine PHP-Seite zu verwenden.

Hoffe, dass Ihr viele Ideen habt!

Vielen Dank und Grüße,
Benny
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 18.09.11 04:33 
Du solltest das mit TIdMultiPartFormDataStream oder so ähnlich und TIdHttp.Post machen können.

Das als GET-Parameter in die URL zu schreiben ist keine gute Idee.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 166

Win 7, Mac OS
Delphi 7
BeitragVerfasst: So 18.09.11 11:41 
Das Problem ist, dass die Übertragung nicht im Programm statt finden soll, sondern der Link soll bereit gestellt werde.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 18.09.11 11:54 
Dann würde ich das ganze einfach mit base64 codieren.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 166

Win 7, Mac OS
Delphi 7
BeitragVerfasst: So 18.09.11 12:01 
Habe mehrere Base64 Klassen im Netzt gefunden, doch in keiner kann ich einen ganzen Stream codieren. Wie funktioniert das dann?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 18.09.11 12:04 
Lies den Stream vorher einfach in einen AnsiString ein. ;-)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 166

Win 7, Mac OS
Delphi 7
BeitragVerfasst: So 18.09.11 12:11 
Gerade habe ich die Unit SZCodeBaseX gefunden (www.koders.com/delph...9E5789046.aspx?s=ftp). Dort gibt es die Funktionen
ausblenden Delphi-Quelltext markieren
1:
2:
function SZEncodeBaseXStream(sIN, sOUT: TStream; Size: integer; const Codes: String; BITS: integer; FullQuantum : integer; MIMELine: integer ): integer;
function SZDecodeBaseXStream(sIN, sOUT: TStream; const Codes: String; BITS: integer): integer;
. Nur dort verstehe ich nicht, wie ich sie verwenden soll. Kannst du mir die beiden Funktionen vom groben Aufbau erklären (wofür sIN,Codes,...?).

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Lies den Stream vorher einfach in einen AnsiString ein. ;-)
Eine URL darf ja im IE nur ca. 2500 Zeichen beinhalten, deshalb ist das eher keine gute Idee.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 18.09.11 12:24 
user profile iconLittleBen hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Lies den Stream vorher einfach in einen AnsiString ein. ;-)
Eine URL darf ja im IE nur ca. 2500 Zeichen beinhalten, deshalb ist das eher keine gute Idee.
Und der Unterschied gegenüber es nicht zu tun liegt wo? :gruebel:
Die Zeichenanzahl ist doch so oder so gleich.

Im IE habe ich gelesen 2083 Zeichen und andere, bei denen auch mehr ging.

Aber wer soll denn bitte URLs mit derart vielen Zeichen überhaupt benutzen? :shock: Bei mir werden die vom Router aus Sicherheitsgründen direkt geblockt.

user profile iconLittleBen hat folgendes geschrieben Zum zitierten Posting springen:
Nur dort verstehe ich nicht, wie ich sie verwenden soll. Kannst du mir die beiden Funktionen vom groben Aufbau erklären (wofür sIN,Codes,...?).
Naja, sIN und sOUT sind doch klar, in sIN ist der Stream mit deinen Daten und in SOUT landet das Ergebnis. Codes und Bits sind nach einem kurzen Blick offenbar SZCodes64URL und SZBITS64. Da ich die Unit nicht kenne, kann ich aber auch nur in den Quelltext schauen. ;-)

Für diesen Beitrag haben gedankt: LittleBen
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 166

Win 7, Mac OS
Delphi 7
BeitragVerfasst: So 18.09.11 12:34 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Aber wer soll denn bitte URLs mit derart vielen Zeichen überhaupt benutzen? :shock: Bei mir werden die vom Router aus Sicherheitsgründen direkt geblockt.
Stimmt...doch den AnsiString kann ich ja auch nicht direkt in die URL eintragen, da manche Zeichen ja nicht erlaubt sind. Also erst noch in Hexadezimal umwandeln?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jfheins
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 332
Erhaltene Danke: 7

Win Vista
VS 2008
BeitragVerfasst: So 18.09.11 13:25 
Du sollst den String ERST in einen Ansistring reinschreieben (ja, dann enthält er ungültige Zeichen) und danach dann base64 kodieren. Danach enthält er keine ungültigen Zeichen mehr.

Falls deine Daten zu lang sind, um noch in die URL zu passen ist das so oder so ein Problem. (base64 schlägt nochmal 33% auf die daten drauf...) In diesem Fall solltest du die Daten lieber per POST übertragen.

Für diesen Beitrag haben gedankt: LittleBen
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home