AGB  ·  Datenschutz  ·  Impressum  







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

Datei an Datei anhängen

Ein Thema von MiniMax · begonnen am 26. Sep 2010 · letzter Beitrag vom 27. Sep 2010
Antwort Antwort
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#1

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 13:48
Für den Text mag das vielleicht gelten, aber es gibt meines Wissens keine Möglichkeit, die Größe eines JPEGs, welches sich im Speicher befindet, zu ermitteln, die es anschließend auf der Festplatte haben wird. Hinzu kommt vor allem bei JPEG noch die Kompression, wodurch man nicht sagen kann, die groß das JPEG jetzt wirklich wird.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 13:52
Zum Schreiben musst du es auch gar nicht wissen, wenn es nur ein Text mit einem JPEG ist. Dann schreibst du eben so lange, bis das ganze JPEG geschrieben ist. Und wenn du die Größe zum Auslesen brauchst, kannst du sie dir ausrechnen: Dateigröße - Header - Text(länge).
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 14:00
Wenn es bei den 2 Dateien bleibt
Markus Kinzler
  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#4

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 14:03
So habe es erstmal mit dem Zusammenfügen getestet:

Delphi-Quellcode:
procedure TForm1.Zusammenfügen;
var
  lStream: TStream;
  lStartPos: Int64;
  lDataSize: Cardinal;
  //bildchen:jpeg;
begin
  lStream := TFileStream.Create('meinStream.ampstr', fmCreate);
  try
    // Memo speichern
    lStartPos := 0;
    lStream.Position := lStream.Position + sizeof(lDataSize);
    memo1.Lines.SaveToStream(lStream);
    lDataSize := lStream.Position - lStartPos - sizeof(lDataSize);
    lStream.Position := lStartPos;
    lStream.Write(lDataSize, sizeof(lDataSize));
    // JPG speichern
    lStartPos := lStream.Size;
    lStream.Position := lStream.Position + sizeof(lDataSize);

    image1.savetostream(lStream);
    lDataSize := lStream.Position - lStartPos - sizeof(lDataSize);
    lStream.Position := lStartPos;
    lStream.Write(lDataSize, sizeof(lDataSize));
  finally
    lStream.Free;
  end;
end;
Es kommt ein Fehler bei der Zeile
    image1.savetostream(lStream);
Code:
[DCC Fehler] Unit1.pas(110): E2003 Undeklarierter Bezeichner: 'savetostream'
Was is falsch?
Gruß
MiniMax
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 14:05
Image1 ist kein JPG. Der bisher gezeigte Code war für das Speichern eines JPG's
Ein ganzes TImage speichern macht auch keinen Sinn, oder willst du Transparenzfarbe, größe auf der Form, Stretchmodus, Anchors etc. davon speichern?
Also einfach überlegen was du wirklich speichern willst und schauen ob es da ein SaveToStream gibt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#6

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 14:07
Ganz einfach: Du willst doch das Bild speichern und nicht den Container. Also brauchst du: (Image1.Picture.Graphic as TJPEGImage).SaveToStream();
Sollte sich mal kein JPEG in dem Image befinden, gibts hier ne Exception.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 14:14
Ganz einfach: Du willst doch das Bild speichern und nicht den Container. Also brauchst du: (Image1.Picture.Graphic as TJPEGImage).SaveToStream();
Sollte sich mal kein JPEG in dem Image befinden, gibts hier ne Exception.

Bernhard
Oder man spart sich den Cast? Weil TGraphic (und btw auch TPicture) können in einem Stream speichern. Wenn man es unbedingt in einen JPG haben will:
Delphi-Quellcode:
var
  jpg : TGraphic;
begin
  jpg := TJPEGImage.Create();
  try
    jpg.Assign(Image1.Picture.Graphic);
    jpg.SaveToStream(stream);
  finally
    jpg.Free;
  end;
end;
So brauchst du nur den Konstruktor ändern und kannst es in alles andere speichern, sofern es von TGraphic erbt. Und du hast keine Exception und es ist irrelevant was im Image1 steht (imho).

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  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 12:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz