AGB  ·  Datenschutz  ·  Impressum  







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

signed and unsigned types

Ein Thema von EWeiss · begonnen am 21. Mär 2019 · letzter Beitrag vom 21. Mär 2019
Antwort Antwort
Seite 2 von 2     12   
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: signed and unsigned types

  Alt 21. Mär 2019, 11:29
Und nochmal:
Delphi-Quellcode:
// :
Buf[dx, dy] and 4278190080
Das ergibt IMMER 0 Sicher das du das willst?
Ich versteh was du meinst.

Der Original source..
Wo es geht muss ich mich daran halten von den Datentypen mal abgesehen.
DatenTyp dafür ist Buf() As Long


Code:
        For y = 0 To h
            For x = 0 To w
                cx = x / s - o
                cy = y / h - 0.5

                r = Sqr(cx * cx + cy * cy)

                dx = (cx + o + 0.01 * cx * ((r - 1) / 0.5)) * s
                dy = (cy + 0.5 + 0.01 * cy * ((r - 1) / 0.5)) * h

                a = (((Buf(dx, dy) And &HFF000000) \ &H1000000) And &HFF&) - d

                If a < 0 Then
                    a = 0
                End If
               
                c = Buf(dx, dy) And &HFFFFFF

                If a > 127 Then
                    imgSpectrumData(x, y) = c Or ((a - 256) * &H1000000)
                Else
                    imgSpectrumData(x, y) = c Or (a * &H1000000)
                End If
            Next
        Next
Und ja ich habe das Problem das ich nicht über 0 hinwegkomme.

Ich erstelle ein leeres Image
Delphi-Quellcode:
  if GDIP_CreateBitmapFromScan0(w, rc.Bottom, w * 4, PixelFormat32bppARGB,
    PByte(imgSpectrumData[0, 0]), imgSpectrum) <> OK then
  begin
    MessageBox(0, 'Error create GDI+ bitmap', nil, 0);
    SendMessage(MainHandle, WM_DESTROY, 0, 0);
    exit;
  end;
imgSpectrumData ist als Byte definiert.. genauso wie das Array für den Buf.
Da ich aber einen Pointer übergeben muss caste ich das Byte zu PByte könnte auch Pointer nehmen.

Das imgSpectrumData ist leer und wird seltsamerweise auch nicht gefüllt das verursacht meine ganzen Probleme.

&HFF& sieht seltsam aus ist aber in DEZ 255 und in VB als Long definiert deshalb der Anhang hinter &HFF&

gruss

Geändert von EWeiss (21. Mär 2019 um 11:33 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

AW: signed and unsigned types

  Alt 21. Mär 2019, 12:05
Das Problem liegt hier..

PByte(imgSpectrumData[0, 0])

Habe mal eine Variable als PByte definiert.

Delphi-Quellcode:
scan0: PByte;
scan0 := PByte(imgSpectrumData[0, 0]);
so ist scan0 Nil.
scan0 := PByte(imgSpectrumData]); so ist der Pointer scan0 gefüllt nur dann bekomme ich Fehlermeldungen..
In VB werden die Arrays mit übergeben und dort funktioniert es.

Hmmm was ist nun richtig.

gruss
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: signed and unsigned types

  Alt 21. Mär 2019, 12:22
Versuche es mal so:

scan0 := PByte(@imgSpectrumData[0, 0]);
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: signed and unsigned types

  Alt 21. Mär 2019, 12:36
Versuche es mal so:

scan0 := PByte(@imgSpectrumData[0, 0]);
Danke imgSpectrumData wird gefüllt aber jede menge Fehler. scan0 ist aber IO.
Ist das gleiche als wenn ich es ohne Array übergebe.

Vermute bald das es an etwas anderem liegt. (Integer für das waveInOpen als ShortInt auslegen) Integer ist ja 32Bit.
Dann muss ich viel ändern. grrrr..

gruss
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: signed and unsigned types

  Alt 21. Mär 2019, 16:01
Zitat:
imgSpectrumData ist als Byte definiert.. genauso wie das Array für den Buf.
GDIP_CreateBitmapFromScan0() erwartet doch sicherlich einen zusammenhängenden Speicherbereich und zwar von h * w * 4 Byte.

Sind die Elemente von imgSpectrumData[] nur als Byte deklariert, so ist das zu wenig Speicher.

Sollte imgSpectrumData[] als mehrdimensionales dynamisches Array deklariert sein, so ist der Speicherbereich noch nicht mal zusammenhängend.
  Mit Zitat antworten Zitat
Rudy Velthuis

Registriert seit: 10. Sep 2011
Ort: Gelsenkirchen
42 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: signed and unsigned types

  Alt 21. Mär 2019, 18:21
Das Problem liegt hier..

PByte(imgSpectrumData[0, 0]) Hmmm was ist nun richtig.

gruss
Warum nicht

PByte(@imgSpectrumData[0, 0]) Das würde mehr Sinn machen, glaube ich.
Rudy Velthuis
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: signed and unsigned types

  Alt 21. Mär 2019, 18:43
Das Problem liegt hier..

PByte(imgSpectrumData[0, 0]) Hmmm was ist nun richtig.

gruss
Warum nicht

PByte(@imgSpectrumData[0, 0]) Das würde mehr Sinn machen, glaube ich.
Wurde doch von @FritzW schon vorgeschlagen habe es versucht und verursacht ebenfalls viele Fehler.
Sage nicht das es falsch ist. Nun dann muss ich diese Fehler wohl beheben.

Zitat:
GDIP_CreateBitmapFromScan0() erwartet doch sicherlich einen zusammenhängenden Speicherbereich und zwar von h * w * 4 Byte.
ob er zusammenhängend sein muss keine Ahnung zumindest werden die Daten so übergeben.
 if GDIP_CreateBitmapFromScan0(w, rc.Bottom, w * 4

Wie würdest du denn dann das Array definieren wenn nicht mit Byte?
Wenn mit Pbyte dann ist das komplette Array "NIL" nach dem erstellen des Image. Siehe Pbyte.png
Und bei der ersten abfrage kracht es dann natürlich. Siehe crash.png

Edit:
a := (((int64(imgSpectrumData[x, y]) and 4278190080) div 16777216) and 255);

wäre möglich aber dann kracht es hier!

imgSpectrumData[x, y]^ := c or (a * 16777216);

gruss

Geändert von EWeiss (11. Jul 2019 um 15:56 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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