AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Restservice Response funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Restservice Response funktioniert nicht

Ein Thema von Maliko · begonnen am 28. Apr 2021 · letzter Beitrag vom 28. Apr 2021
Antwort Antwort
Maliko

Registriert seit: 20. Jun 2019
89 Beiträge
 
Delphi 10.3 Rio
 
#1

Restservice Response funktioniert nicht

  Alt 28. Apr 2021, 16:11
Moin,

ich hab da grad ein kleines Problem. Und zwar habe ich das Problem dass unsere Datenbank noch auf 32bit läuft, da es irgendwelche Probeleme mit einer alten Software gibt, welche im Moment noch nicht ausgetauscht werden kann. Ich habe einen REST-Service über DataSnap geschrieben der unter 64bit einwandfrei funktioniert. Unter 32bit bekomme ich allerdings eine Accessviolation.

Es geht um folgenden Code:

Delphi-Quellcode:
mStream.LoadFromFile(mFilename);
mStream.Position := 0;
Response.ContentStream := mStream;
Response.Content := AnsiString(mStream);
Response.ContentType := 'application/pdf';
Response.SetCustomHeader('Content-Disposition',
Format('attachment; BelegID="%s"', ['Abrechnung'])); // Derzeit nur Abrechnungsbelege
Ersetze ich ihn durch folgenden Code geht es:
Delphi-Quellcode:
Response.Content := 'Test';
Response.ContentType := 'text/plain';
Von daher vermute ich dass es mit der PDF-Datei zusammenhängt die als Datenstream zurückgegeben wird. Die Funktion läuft über ein TWebModule und ist dort als Action registriert. Kann mir da vielleicht irgendjemand weiterhelfen, wie ich den Response schreiben muss, damit er unter 32bit funktioniert? Über 64bit würde es gehen, aber das ganze muss schnell online gehen und das Upgrade auf 64bit für den Server auf dem das laufen soll ist erst für ende des Jahres vorgesehen.

Über ein kleines bisschen Anschubhilfe währe ich euch wahnsinnig dankbar, wei momentan bin ich grad echt ratlos was ich da noch machen soll.

Vielen Dank schon einmal im Voraus.

Viele Grüße
Maliko

EDIT: Ich habe jetzt nur den Snippet gepostet der Probleme macht. Die Funktion ist erheblich länger, läuft aber problemlos durch.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#2

AW: Restservice Response funktioniert nicht

  Alt 28. Apr 2021, 17:31
Response.Content := AnsiString(mStream);

Ehrlich jetzt? Ein Cast von einem TStream auf einen AnsiString? Das kann eigentlich nicht wirklich funktionieren - selbst wenn es durchlaufen würde. Und, wieso überhaupt Content setzen, wenn ContentStream doch schon die Daten enthält?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Restservice Response funktioniert nicht

  Alt 28. Apr 2021, 17:53
Content (string) oder ContentStream

und ja, der böse Cast geht garnicht.
z.B. Delphi-Referenz durchsuchenTStringStream und dann mStream.DataString, wenn es unbedingt String sein soll. (oder eine TStringList)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Maliko

Registriert seit: 20. Jun 2019
89 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Restservice Response funktioniert nicht

  Alt 28. Apr 2021, 18:48
Ich bring ihn um. Ich bring den Typen um, sollte ich dem noch einmal über den Weg laufen. Das ist mir tatsächlich nicht aufgefallen. Und zwar weil die Funktion nicht von mir ist, sondern von einem ehemaligen Kollegen. Das war ursprünglich ein normales Programm mit grafischer Oberfläche und ich hab die komplette Logik in einen WindowsService portiert. Und dabei natürlich den bestehenden Quellcode 1 zu 1 übernommen.

Da ich allerdings den Fehler gemacht habe die Portierung auf 64bit vorzunehmen und erst danach auf 32bit umzustellen, ist mir das nie aufgefallen, weil unter 64bit funktionierte es ja. Warum auch immer. Da ich mich selbst damit aber auch nicht wirklich auskannte und nur die Portierung gemacht habe, ist es mir nicht aufgefallen. Schande über mein Haupt.

Vielen vielen Dank für eure Hilfe. Sollten wir uns irgendwann mal in der Realität über den Weg laufen, geb ich euch ein Bier aus.

Viele Grüße
Maliko
  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 17:46 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