Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Fehlermeldung Falsches Streamformat auf einen Server (https://www.delphipraxis.net/188808-fehlermeldung-falsches-streamformat-auf-einen-server.html)

HPB 8. Apr 2016 12:12

Datenbank: Interbase • Version: XE2 • Zugriff über: IB

Fehlermeldung Falsches Streamformat auf einen Server
 
Guten Tag Delphianer,
in einer Tabelle habe ich ein Blob-Feld, in dem ein Bild, kann
ein Jpg oder sonsiges Format sein, gespeichert.

Wenn ich das Programm auf auf meinem PC aufrufe klappt alles wunderbar.

Starte ich aber das Programm auf einen Server (SmallBusinessServer 2011),
dann bekomme ich eine Fehlermeldung beim Starten des Programm:
Ungültiges Stream-Format

Wenn ich das Anzeigen der Blobfelder unterbinde, dann wird das Programm
ohne eine Fehlermeldung ausgeführt.

Wie so geht auf dem lokalen Rechner alles gut, aber auf dem Server nicht?
Was muss ich den umprogrammieren damit es auf dem Server auch fehlerfrei läuft?


Mit Gruß und vielen Dank für Eure Hilfen im Voraus.
HPB

HPB 8. Apr 2016 17:13

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Auf dem Server ist Firebird 2.5 Server installiert.
Ich habe nun noch auf einen Laptop getestet.
Firebird 2.5. Server installiert.
Das Programm gestartet und es sind keine Fehlermeldungen
ausgegeben worden.
Kann es am SmallBusinessserver liegen?
Irgendwelche Einstellungen??
Weis irgenjemand einen Rat?
Mit Gruß HPB

mjustin 9. Apr 2016 07:13

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Um die Fehlerstelle einzukreisen würde ich z.B. madExcept einsetzen und dann die Anwendung auf dem Server starten. Den Callstack der Absturzstelle dann hier posten, falls er aussagekräftig genug ist kann man die Ursache so leichter finden.

HPB 11. Apr 2016 07:22

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag mjustin,
vielen Dank für den Hinweis.
Ich habe nun die MadException installiert und das Programm auf dem Server gestartet.
In der Anlage der Bugreport. Mir sagen die Meldungen im Report nicht allzuviel.
Die Zeilen die ich meine habe ich mit //HPB gekennzeichnet.
Es verwundert mich denn schon sehr, das das Programm auf meinem
Rechner fehlerfrei funktioniert und nicht auf dem SBS.
Aber vielleicht findet ja jemand, auf Grundlage des Bugreports, den Fehler.
Mit Gruß HPB

hoika 11. Apr 2016 07:24

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Hallo,

AdvRichEditorBase 7425 +14 TAdvRichEditorBase.LoadFromStream
unLogenDaten 338 +3 TOLogendaten.DoOpenTabelle

Du musst immer von unten nach oben lesen.
Oben steht der letzte Befehl.

Es sieht so aus, als ob in der Tabelle der Programmeinstellungen bei der Server-DB bei diesem Datensatz keine RTF-Datei steht.
Vielleicht ist das Feld ja sogar leer?

Benutzt du wirklich die gleiche Datenbank?
Kopiere doch mal die FDB aus dem SBS auf deinen Entwicklungsrechner.


Heiko

HPB 11. Apr 2016 10:32

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für Deine Antwort hoika,
ich habe die DB vom Server auf meinen Rechner geladen.
Ein Backup und ein Restore durchgeführt. Jetzt bekomme ich auch die gleiche Fehlermeldung
wie auf dem Server.
Im Debug wird der Fehler in der TMSComponete angezeigt.
Siehe auch Screenshot. Ich glaube allerdings nicht das hier der Fehler ist.
Folgendes habe ich nun versucht:
Die Blobfelder im Formular herausgenommen.
Eine ADVRichEditor Komponente auf das Formular gelegt und mit
folgendem Code eingelesen:
Delphi-Quellcode:
procedure TTMSFmRegistry.LeseUnterschriften;
var
  pSignaturDatei: string;
  pSignaturStream: TFileStream;
  pLeseSignatur: TFileStream;
begin
  pSignaturDatei := GlobelPfad + '\MvStSignatur.dat'; // Ist dies das richtige Format??
  pSignaturStream := TFileStream.Create(pSignaturDatei, fmCreate);
  dtmdMain.logendatenSIGNATURTEXT.SaveToStream(pSignaturStream);
  pSignaturStream.Free;

  pLeseSignatur := TFileStream.Create(pSignaturDatei, fmOpenRead);
  advrchdtr1.LoadFromStream(pSignaturStream); // advrchdtr.1 = TAdvRichEditor-Komponente
  pLeseSignatur.Free;

  DeleteFile(pSignaturDatei);
end;
Aber auch hier bekomme ich die gleiche Fehlermeldung und im Debug komme ich wieder
zu der gleichen Stelle in der TMSKomponente.

Kann es sein das ich ein falsches Dateiformat in der Variable "pSignaturDatei" verwende?
Welches Format kann, soll, muss ich verwenden, wenn sowohl Text als auch Grafik in einem Blobfeld
gespeichert sind?
Mt Gruß HPB

dataspider 11. Apr 2016 11:18

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Du gibst den Stream ja schon frei, bevor du den in den Richtext einliest...

Frank

Warum machst du erst eine Datei?
Geht es nicht direkt?

Delphi-Quellcode:


procedure TTMSFmRegistry.LeseUnterschriften;
var
  pSignaturStream: TMemoryStream;
begin
  pSignaturStream := TMemoryStream.Create;
  try
    dtmdMain.logendatenSIGNATURTEXT.SaveToStream(pSignaturStream);
    pSignaturStream.Position := 0;
    advrchdtr1.LoadFromStream(pSignaturStream);
  finally
    pSignaturStream.Free;
  end;
end;

HPB 11. Apr 2016 12:00

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Zitat:

Zitat von dataspider (Beitrag 1335243)
Du gibst den Stream ja schon frei, bevor du den in den Richtext einliest...

Frank

Warum machst du erst eine Datei?
Geht es nicht direkt?

Ich habe es einmal mit Deinem Vorschlag getestet.
Es wird die gleiche Fehlermeldung ausgegeben.
Mit Gruß
HPB

mrtwo12 11. Apr 2016 12:16

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Moin,

Zitat:

Zitat von dataspider (Beitrag 1335243)
Delphi-Quellcode:

procedure TTMSFmRegistry.LeseUnterschriften;
var
  pSignaturStream: TMemoryStream;
begin
  pSignaturStream := TMemoryStream.Create;
  try
    dtmdMain.logendatenSIGNATURTEXT.SaveToStream(pSignaturStream);
    pSignaturStream.Position := 0;
    advrchdtr1.LoadFromStream(pSignaturStream);
  finally
    pSignaturStream.Free;
  end;
end;

ist schon richtig, ich denke hier liegt der "Fehler".

Delphi-Quellcode:
dtmdMain.logendatenSIGNATURTEXT.SaveToStream(pSignaturStream);
Bist du sicher das der Stream befüllt ist?

mfg
S.Simon

dataspider 11. Apr 2016 12:59

AW: Fehlermeldung Falsches Streamformat auf einen Server
 
Möglicherweise funktioniert der Zugriff bei Blob' s über Stream nicht.
Dann sollte es aber mit BlobStream gehen:

Delphi-Quellcode:

procedure TTMSFmRegistry.LeseUnterschriften;
var
  AStream: TStream;
begin
  AStream := ADataSet.CreateBlobStream(AField, bmRead); // ADataSet und AField ersetzen
  try
    AStream.Position := 0;
    advrchdtr1.LoadFromStream(AStream);
  finally
    AStream.Free;
  end;
end;
Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 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