AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Ist die Unit jpeg fehlerhaft?
Thema durchsuchen
Ansicht
Themen-Optionen

Ist die Unit jpeg fehlerhaft?

Ein Thema von blablab · begonnen am 23. Dez 2008 · letzter Beitrag vom 23. Dez 2008
Antwort Antwort
Seite 1 von 3  1 23      
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#1

Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 16:39
Hallo!

irgendwie bin ich etwas verwirrt.
ich benutze die unit jpeg und ich hab ein TJpegImage namens jpg mit nem bild drin.

wenn ich das hier mache dann zeigts mir in der image-komponente ein bild an.
Image.Picture.Assign(jpg); wenn ich das hier mache gibts ein jpeg 42 fehler.
Delphi-Quellcode:
s := TStringStream.Create('');
jpg.SaveToStream(s);
jpg.LoadFromStream(s);
Image.Picture.Assign(jpg);

aber normalerweise müsste das doch funktionieren oder nicht?
hab ich hier irgend einen denkfehler drin?

Gruß Simon

[edit=Matze][delphi]-Tags eingefügt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 16:42
Warum nimmst du einen StringStream?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 16:43
Setz mal ein
s.Position := 0; zwischen das SaveToStream und LoadFromStream.
Uwe Raabe
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 16:59
danke für die schnelle antworten!

@mkinzler: ich will mehrere jpegs in eine datei speichern

@uwe raabe: so funktionierts. danke! nur leider ist mein eigentliches problem damit immer noch nicht gelöst...
und zwar sieht das folgendermaßen aus:


ich speicher meine Bilder so:
Delphi-Quellcode:
procedure TContacts.SpeichernBilder(var str: string);
var i, tmp: integer;
      strstr: TStringStream;
      tmpstr: string;
begin
   //Anzahl der Bilder speichern
   tmp := Length(Bilder);
   str := str + VarToString(@tmp, SizeOf(tmp));

   for i := 0 to Pred(tmp) do with Bilder[i] do begin
      //Bild speichern
      tmpstr := '';
      if not Empty then begin
         strstr := TStringStream.Create('');
         SaveToStream(strstr);
         tmpstr := strstr.DataString;
         strstr.Free;
      end;
      tmp := Length(tmpstr);
      str := str + VarToString(@tmp, SizeOf(tmp)) + tmpstr;
   end;
end;
und dann lad ich sie wieder so:
Delphi-Quellcode:
procedure TContacts.LadenBilder(var str: string; var pos: cardinal);
var i, laenge, tmp: integer;
      strstr: TStringStream;
      tmpstr: string;
begin
   //Anzahl der EigensDefs auslesen
   laenge := StringToInt(Copy(str, pos, SIZE));
   SetLength(Bilder, laenge);
   Inc(pos, SIZE);

   //Objekte initialisieren
   for i := 0 to Pred(laenge) do with Bilder[i] do begin
      Bilder[i] := TJPEGImage.Create;
      //Bild laden
      tmp := StringToInt(Copy(str, pos, SIZE));
      Inc(pos, SIZE);
      if tmp > 0 then begin
         strstr := TStringStream.Create(Copy(str, pos, tmp));
         tmpstr := Copy(str, pos, tmp);
         LoadFromStream(strstr);
         strstr.Free;
         Inc(pos, tmp);
      end;
   end;
end;
aber irgendwie klappts net so richitg.
der string den ich speicher ist 6671 zeichen lang und der der zu laden ist ist au wieder 6671 zeichen lang und die ersten zeichen stimmen auch überein. deshalb geh ich mal davon aus, dass die strings identisch sind...
ich hab auch mal Position := 0 reingemacht aber es geht trotzdem nicht
ich krieg immer eine zugriffsverletzung...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 17:01
Beim Schreiben von Binärwerten in eine String(Stream) werden sich die Werte ändern! Nimm einen MemoryStream.
Markus Kinzler
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 17:01
oh... ich glaub ich hab den fehler gefunden...

liegt an dem with

danke für eure mühe!

@mkinzler:
ich hatte bis jetzt aber noch nie probleme mit stringstream. was ist den der vorteil von memorystream?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 17:04
Er kann alle Werte aufnehmen. Beim StringStream könnte es dir passieren, das Werte anders interpretiert werden.
Markus Kinzler
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 17:18
aber ich muss sagen mit dem stringstream klappt das ganz gut.
der ist halt relativ praktisch weil ich mir damit einen speicherstring machen kann mit bildern und anderen informationen drin und wenn der string erstellt wurde speicher ich ihn an einem stück ab.
und damit hab ich jetzt schon n paar jpeg-bilder abgespeichert. von daher müssten schonmal alle chars von 0-255 abgespeichert worden sein und es hat au immer geklappt (solange ich keine solche fehler gemacht hab wie mit dem with)...
ich glaub weil der string nicht nullterminiert ist geht das ohne probleme
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 17:21
Trotzdem verwendest Du eine Bananenkiste, um Äpfel zu transportieren. Was hast Du denn gegen TMemoryStream?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Ist die Unit jpeg fehlerhaft?

  Alt 23. Dez 2008, 17:25
ehrlich gesagt weiß ich einfach net wie ich des dann machen soll...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:50 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