Bildausschnitt im Bild suchen?



  • DocShoe schrieb:

    PS:
    Es gibt übrigens keine Fegefeuer mehr, das hat Papst Benefiz XVI. letztes Jahr mit dem neuen Standard abgeschafft. War wohl buggy oder liess sich nicht nach Gesellschaft 2K portieren.

    Er hat den Limbus abgeschafft (Ort für ungetaufte Kinder). Das Fegefeuer ist nach dem gültigen Katechismus noch existent.



  • Braunstein schrieb:

    DocShoe schrieb:

    PS:
    Es gibt übrigens keine Fegefeuer mehr, das hat Papst Benefiz XVI. letztes Jahr mit dem neuen Standard abgeschafft. War wohl buggy oder liess sich nicht nach Gesellschaft 2K portieren.

    Er hat den Limbus abgeschafft (Ort für ungetaufte Kinder). Das Fegefeuer ist nach dem gültigen Katechismus noch existent.

    Zum Glück habe ich jemanden, auf den ich die Schuld abschieben kann: Hab nur das Programm von Hagen Rether gehört, und der hat das so behauptet. Bin da selbst eher gesagt wenig interessiert und demnach auch schlecht informiert, bitte also um Entschuldigung für Verbreitung nicht recherchierter Behauptungen.



  • Nochmals Entschuldigung für das Thread-Hijacking, also von mir aus kanns jetzt gerne mit dem Originalthema weitergehen,



  • Danke euch für die antworten.

    audacia schrieb:

    DocShoe schrieb:

    Warum programmierst du dann C++? Wenn du das in Delphi programmiert hast, dann kennst du ja sicherlich auch den Algorithmus, den du dabei benutzt hast, was hält dich davon ab, diesen dann auch in C++ umzusetzen? So schwierig ist das nun wirklich nicht...

    Überdies ist es vollkommen überflüssig. Erstelle ein Delphi-Unit, mit obiger Funktion, füge die Unit deinem C++Builder-Projekt hinzu, und schon kannst du die Funktion auch von C++ aus benutzen.

    Ich habe das jetzt so gemacht und die Unit2 mit eingebunden, nun bekomme ich diese fehlermeldung:

    [C++ Fehler] Unit1.cpp(82): E2268 Aufruf der undefinierten Funktion 'CheckBitmap'
    

    Danke schonmal.

    MfG



  • bruce85 schrieb:

    nun bekomme ich diese fehlermeldung:

    [C++ Fehler] Unit1.cpp(82): E2268 Aufruf der undefinierten Funktion 'CheckBitmap'
    

    Na in den Header rein damit (mit der Deklaration)...



  • Ja, das hatte ich ja erst deklariert und dann bekam ich das hier:

    [Linker Fehler] Unresolved external 'TForm1::CheckBitmap(Graphics::TBitmap *, Graphics::TBitmap *)' referenced from C:\PROGRAMME\BORLAND\CBUILDER6\PROJECTS\NEUER ORDNER\UNIT1.OBJ
    

    Ich habs in Header Datei von Unit1 so deklariert:

    public:		// Anwender-Deklarationen
    	int CheckBitmap(Graphics::TBitmap *tempBMP,Graphics::TBitmap *tempBMP2);
    

    Hab ich irgendwas falsch gemacht?

    MfG



  • Deine Funktion gibt doch einen bool zurück, keinen int. ( Wenn dus nicht geändert hast)
    Du musst in deinem Fall die Unit2.cpp zum Projekt hinzufügen.



  • bruce85 schrieb:

    Hab ich irgendwas falsch gemacht?

    Ja. Du sollst es nicht selbst deklarieren, sondern den Header einbinden, den der Delphi-Compiler dir generiert.



  • Ja, ich hab ja die Unit2.Pas dem Projekt hinzugefügt, das war das erste was ich gemacht habe, aber er sagt mir das diese Funktion dann undefiniert ist, obwohl ich diese Unit auch im Hauptformular(Quelltext) includiert habe:

    #include "Unit1.h"
    #include "Unit2.hpp"
    

    Irgendwas mache ich falsch. 🙄

    MfG



  • Wie genau sieht denn die Delphi-Unit aus?



  • audacia schrieb:

    Wie genau sieht denn die Delphi-Unit aus?

    unit Unit2;
    
    interface
    
    uses windows, SysUtils, Graphics;
    
    implementation
    
    function CheckBitmap(const Main: TBitmap; const Check: TBitmap): Boolean;
    var 
      p1: PByteArray;
      p2: PByteArray; 
      x: Integer; 
      y: Integer; 
      i: Integer; 
      pfm: Integer; //Pixelformatmodificator 
    const 
      PixelFormatValues : array[TPixelformat] of Integer = (0, 0, 0, 8, 0, 16, 24, 32, 0); 
    begin 
      Result := false; 
      Assert(Main.PixelFormat in [pf8Bit, pf16Bit, pf24Bit, pf32Bit]); 
      Assert(Check.PixelFormat in [pf8Bit, pf16Bit, pf24Bit, pf32Bit]); 
      Assert(Main.PixelFormat = Check.PixelFormat); 
      pfm := PixelFormatValues[Main.PixelFormat] div 8; 
      p2 := Check.ScanLine[0]; 
      for y := 0 to Main.Height-1 do 
        begin 
        p1 := Main.ScanLine[y]; 
        for x:= 0 to Main.Width-1 do 
          begin 
          if CompareMem(p1, p2, pfm) then 
            for i:=0 to Check.Height-1 do 
              if ((x + Check.Width) <= Main.Width) and 
                 ((y + Check.Height) <= Main.Height) then 
                begin 
                p1 := Main.ScanLine[y+i]; 
                Inc(PByte(p1), x * pfm); 
                p2 := Check.ScanLine[i]; 
                if not CompareMem(p1, p2, Check.Width * pfm) then 
                  Break 
                else 
                  if i = Check.Height-1 then 
                    begin 
                    Result := true; 
                    Exit; 
                    end; 
                end; 
          Inc(PByte(p1), pfm); 
          end; 
        end; 
    end;
    
    end.
    

    Die Unit2 von Delphi habe ich dem Projekt in C++ Builder hinzugefügt:
    http://62.75.204.158/upload/getimg.php?img=JLwXyeGPk.PNG

    Und hier der Quellcode von meiner Hauptformular:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    #include "Unit2.hpp"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      CheckBitmap(Image1->Picture->Bitmap,Image2->Picture->Bitmap);
    }
    //---------------------------------------------------------------------------
    

    Danke schonmal.

    MfG



  • Eventuell magst du nocheinmal nachschauen, wozu noch gleich die interface -Sektion diente.


Anmelden zum Antworten