AGB  ·  Datenschutz  ·  Impressum  







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

cards.dll benutzen?

Ein Thema von .chicken · begonnen am 26. Mär 2007 · letzter Beitrag vom 28. Mär 2007
Antwort Antwort
Seite 3 von 4     123 4      
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#21

Re: cards.dll benutzen?

  Alt 26. Mär 2007, 19:18
Ok, hier biddeschön

Also ihr seht ja noch nich viel drin, will erst das mit der .dll hinrkiegen, der Rest (den hatte ich auch schonmal zur Hälfte) kommt dann später!
Angehängte Dateien
Dateityp: rar holdem_976.rar (192,2 KB, 21x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#22

Re: cards.dll benutzen?

  Alt 26. Mär 2007, 20:10
jau...
hättest du mal "meine" genommen dann währe alles gut.
Ist wirklich nicht schwer.


Die cards.dll (cards32.dll bei Win 95 etc) brauchst du nicht in das Verz. kopieren,
die ist bei Windows mit dabei. (Meine guckt automatisch nach )

Die DLL heisst "cards.dll" bei Windows XP.


So, der Fehler liegt bei   cdtinit(CardWidth, CardHeight) //<--<<<; warum kann ich jetzt nicht auf die schnelle sagen.


Bei mir sähe das so aus:

Delphi-Quellcode:
{
  // "Kartenfarbe":

                // Kreuz,      Karo,        Herz,        Pik
                // oder auch:
                // Eichel,    Schell,      Herz,        Grün
  TCardSuits = (suitClubs, suitDiamonds, suitHearts, suitSpades);

  // Karten:
  TCardFaces = (faceAce,  // Ass
                faceTwo,  // 2
                faceThree, // 3
                faceFour,  // ...
                faceFive,
                faceSix,
                faceSeven,
                faceEight,
                faceNine,
                faceTen,  //10
                faceJack,  // Bube
                faceQueen, // Dame
                faceKing  // König
}
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Cards32;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
    Karten: TCards;
  public
    { Public declarations }
  end;



var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Karten := TCards.Create; // Unit/Dll initialisieren
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Karten.Free; // Unit/Dll wieder freigeben und aus dem Hauptspeicher löschen !
end;

procedure TForm1.FormPaint(Sender: TObject);
var i: Integer;
begin
  // male mal:
  for i:= 0 to 5 do
    Karten.DrawCard(
      Canvas.Handle,
      Point(20 + i,20 + (i*10)), // an Stelle
      suitClubs, // Kreuz
      faceAce, // Ass
      FALSE // Ne, kein Highlight (werden invertiert wenn True)
      );

end;

end.
fertisch.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#23

Re: cards.dll benutzen?

  Alt 26. Mär 2007, 20:18
Ok, super danke, das klappt jetzt zwar soweit, schade finde ich nur, dass ich nich ganz verstehe was du in deiner cards32.pas machst! Trotzdem danke
  Mit Zitat antworten Zitat
pitti platsch

Registriert seit: 26. Dez 2006
Ort: Berlin
25 Beiträge
 
Delphi 2005 Professional
 
#24

Re: cards.dll benutzen?

  Alt 26. Mär 2007, 20:19
Die Fehlermeldung kommt daher, dass die Cards32.pas Datei falsch ist. Die Funktionen müssen alle als stdcall deklariert werden (Hinter den Rückgabewert stdcall; schreiben und vor external... nochmal).
Hier ein Beispiel für die Funktion cdtTerm:
function cdtTerm : Integer; stdcall; und unten dann noch:
function cdtTerm; stdcall; external csCards32; Dann läuft das Programm, aber es zeigt nichts an. Das liegt daran, dass du cdtdraw(Form1.Canvas.Handle, 0, 0, 0, 0, 0); nur im Konstruktor aufrufst. Dies muss aber immer beim neuzeichnen des Formulars (also im OnPaint-Event) geschehen.

Außerdem solltest du im OnDestroy-Event deines Formulars die Funktion cdtTerm aufrufen .

mfg
pitti platsch
Sollte geh'n...
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#25

Re: cards.dll benutzen?

  Alt 26. Mär 2007, 20:24
Super, dakne fuer die Antworten ich versuch das dann morgen mal hinzukriegen! Finde den Mist komplizierter als den Rest des Pokerspiels (Kartenabfrage etc...)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#26

Re: cards.dll benutzen?

  Alt 26. Mär 2007, 23:12
Zitat von Pitti:
Die Fehlermeldung kommt daher, dass die Cards32.pas Datei falsch ist. Die Funktionen müssen alle als stdcall deklariert werden
japp, so ist es. Musste ich doch erst mein Delphi anschmeissen...


Zitat von .chicken:
Ok, super danke, das klappt jetzt zwar soweit, schade finde ich nur, dass ich nich ganz verstehe was du in deiner cards32.pas machst! Trotzdem danke
1.) alles in eine Kalsse gepackt
2.) es ist egal welche Windowsversion (ausgenommen Vista da ich es noch nicht kenne)
3.) Fehlermeldungen bei Fehlern die man lesen kann
4.) übersichtlicher
5.) einfaches Zeichnen eines eigenen Kartenhintergrundes
6.) fällt mir jetzt nicht ein

Die andere Unit stellt wirklich nur die Grundfunktionen "ohne alles".
Wird die Dll nicht gefunden oder die falsche geladen gibts Probleme.

Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#27

Re: cards.dll benutzen?

  Alt 27. Mär 2007, 12:49
Ok, super danke, vielleicht versteh ich den Code ja wenn ich mich nomma genau dransetze! Vielen Dank für eure Hilfe!!!!!

Da Hab ich nochma ne Frage (sorry )

Delphi-Quellcode:
  TCardInit = function (var dx, dy : Integer) : Integer; stdcall;
  TCardTerm = function : Integer; stdcall;
  TCardDraw = function (const hDC : Cardinal; const x, y, iCard, iFlags : Integer;
    const dwColor : Cardinal) : Integer; stdcall;
  TCardDrawExt = function (const hDC : Cardinal; const x, y, dx, dy, iSuit,
    iFlags : Integer; const dwColor : Cardinal) : Integer; stdcall;
  TCardAnimate = function (const hDC : Cardinal; const lBack, x, y,
    lState : Integer) : Integer; stdcall;
    // Wird anscheinend unter XP nicht mehr unterstützt
Wo steht denn, was diese ganzen funktionen machen??? Oder hab ich da shcon wieder was falsch verstanden? ^^
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#28

Re: cards.dll benutzen?

  Alt 27. Mär 2007, 12:50
Einfach fragen oder in die Hilfe gucken.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#29

Re: cards.dll benutzen?

  Alt 28. Mär 2007, 13:43
Also erstens weise ich nochmal auf meine editierten Beitrag weiter oiben hin, da hab ich nomma ne Frage gestellt und dann schon wieder eine

Ist es Möglich dass ich der Klasse Cards noch die properties "Bild" und "Farbe" hinzufüge?
Somit könnte ich mir meine neue Typendefinition sparen:
Delphi-Quellcode:
type TCard = record
  Bild, Farbe: Integer;
end;
Hoffe ihr versteht was ich machen will. Habs auch schon versucht aber es gibt dabei immr Fehler!
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#30

Re: cards.dll benutzen?

  Alt 28. Mär 2007, 14:11
Code:
CardInit = function liefert die grösse der Karten, Breite x Höhe
CardTerm = function initialisiert die dll
CardDraw = function zeichnet eine definierte karte
CardDrawExt = function zeichnet eine definierte karte mit bestimmten zus. Parametern

CardAnimate = function Wird anscheinend unter XP nicht mehr unterstützt :gruebel:
Zitat:
Ist es Möglich dass ich der Klasse Cards noch die properties "Bild" und "Farbe" hinzufüge?
Für dein Spel ? In der Unit alle 52 Karten zu definieren macht nicht unbedingt Sinn.
(vill. falsch verstanden was du möchtest )

Du kanns in deinem Spiel aber einen Recordtypen basteln zB. für jeden spieler

Delphi-Quellcode:
type
  TPlayerCard = Record
                  Farbe: TCardSuits; // Kreuz, Karo, Herz und so
                  Bild: TCardFaces; // Bube, Dame, ..., 2, 3, ...
                end;
  TPlayerHandCards = array [0..5] of TPlayerCard; // jeder bekommt nur 6 Karten oder so ;-)

var
  PlayerOneCards = TPlayerHandCards;


procedure SoUndSo...
begin
  PlayerOneCards[0].Farbe := suitHearts;
  PlayerOneCards[0].Bild := faceAce;

  //..
end;

procedure Werhatwas...
begin
  if (PlayerOneCards[0].Farbe = suitHearts) and PlayerOneCards[0].Bild = faceAce) then
    ShowMessage('Player 1 hat n Hertz Ass');

  //..
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 22:37 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