AGB  ·  Datenschutz  ·  Impressum  







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

Surface Stream

Ein Thema von EWeiss · begonnen am 28. Dez 2013 · letzter Beitrag vom 30. Dez 2013
Antwort Antwort
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#1

AW: Surface Stream

  Alt 28. Dez 2013, 19:38
Was ist das denn?
gs.Read(bu, 0);
1. sollte man Readbuffer statt Read verwenden und 2. muss das zweite Argument die Anzahl der zu lesenden Bytes enthalten (also sizeof(bu)).
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Surface Stream

  Alt 28. Dez 2013, 19:46
1. sollte man Readbuffer statt Read verwenden
Read liest "maximal" soviele Bytes, wie angegeben und bei weniger (z.B. Ende des Streams) erkennt man das am Result, was er aber nicht auswertet.

ReadBuffer liest genau so viel, wie man angibt und bei weniger, gibt es eine Exception.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Surface Stream

  Alt 28. Dez 2013, 20:07
hmm Danke nur was ist jetzt richtig

gruss

Geändert von EWeiss (29. Dez 2013 um 01:07 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Surface Stream

  Alt 28. Dez 2013, 23:43
Sorry Change denke hab ne Lösung gefunden.

gruss

Geändert von EWeiss (29. Dez 2013 um 01:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Surface Stream

  Alt 29. Dez 2013, 03:11
Was richtig ist ... das was man benötigt wird.

Wenn du Result selber auswerten willst, dann Read und wenn du einfach blind davon ausgehst, daß es geht und du nir im Fehlerfall eine automatische "Fehlerbehandlung" haben möchtest, dann ReadBuffer.


Keine Ahnung, was bei dem originalen Read der zweite Parameter ist (vermutlich der Anfang im ZielArray), aber im Delphi ist es die Länge, was im Original ganz bestimmt der 3. Parameter war.


Wegen dem Bitmap auf D:\
- Was ist, wenn es kein D: gibt, dieses nicht beschreibbar ist oder die Schreibrechte fehlen?
- Tipp: TPath.GetTempPath oder TPath.GetTempFileName aus IOUtils
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Surface Stream

  Alt 29. Dez 2013, 08:40
Danke

ich vermisse die Funktion DirectX GraphicsStream man mag es nicht glauben scheint aber unter Delphi nicht zu existieren.

Zitat:
Keine Ahnung, was bei dem originalen Read der zweite Parameter ist (vermutlich der Anfang im ZielArray), aber im Delphi ist es die Länge, was im Original ganz bestimmt der 3. Parameter war.
JO den ich eigentlich (was meine Lösung war) mit GraphicsStream auslesen wollte.

Zitat:
aber im Delphi ist es die Länge, was im Original ganz bestimmt der 3. Parameter war
gs.ReadBuffer(bu, sizeof(bu)); Aber alle meine Farben sind falsch.

Aber die gibt es wieder nicht.
Dann wäre auch das schreiben auf die Platte hinfällig gewesen.

Delphi-Quellcode:
gs: GraphicsStream; // <<< Direct3D9?? nix
gs.Read(bu, 0, sizeof(bu));
Jetzt kann ich beides nicht verwenden
DirectX > GraphicsStream (DataStream in SlimDX)


gruss

Geändert von EWeiss (29. Dez 2013 um 08:51 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Surface Stream

  Alt 29. Dez 2013, 14:08
Sind nur die Farben falsch? Also eigentlich schon das richtige Bild? Dann hat dein Surface vermutlich nicht das Format ABGR wie es für die GDI üblich ist. Gängig wäre noch ARGB, da würde einfach B und R tauschen genügen. Da DX aber ja eine ganze Fülle an Farbformaten unterstützt, kommt es darauf an, wie du dein Surface angelegt hast.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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:27 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