![]() |
Memory in Delphi
Hallo ihr alle!
Ich habe eine Frage :) hat schonmal jemand von euch ein Memory in Delphi programmiert? Ich soll das als Schulprojekt machen und weiss noch nicht so direkt wie ich das machen soll :) Gruss Deven |
Re: Memory in Delphi
Ich würde mit TImages auf Panels arbeiten, die sichtbar werden, wenn man auf das panel klickt und wieder unsichtbar, wenn zwei gleichzeitig sichtbar sind und sie nicht übereinstimmen.
Zur Kontrolle würde ich ein zweidimensionales array nehmen (4x4 reicht anfangs), das mit jeweils zwei identischen werten randomized gefüllt wird. Anhand des Arrays würde ich dann auch die TImages mit den Bildern befüllen. |
Re: Memory in Delphi
huhu :)
danke das is schonmal ne gute idee! Aber was meinst du mit zweidimensionales Array? nene einfaches Array kenne ich ... Achja... und wie soll ich es machen wenn die anzahl der Karten variable sein soll? |
Re: Memory in Delphi
Dann musst du die Panels/Images zur Laufzeit erstellen, sonst wird es nicht gehen. Das array muss auch in der Größe variabel sein.
|
Re: Memory in Delphi
Stell dir ein zweidimensionales Array wie eine Tabelle vor, halt mit 2 Spalten...
|
Re: Memory in Delphi
ok
eine tabelle ... mehrere Spalten und mehrere Zeilen schätze ich meint ihr und was bringt mir das im zusammenhang mit memory? |
Re: Memory in Delphi
Genau.
Du könntest dort die Karten usw. reinschieben. Dann kannst du es im Programm besser verarbeiten... |
Re: Memory in Delphi
Das sieht dann in etwa so aus:
Array:
Code:
Du hast dann die Zeile und Spalte von dem Panel, wo der User draufklickt - wie in einem Koordinatensystem - oben links ist 1,1.
0 1 2 3
0 [a] [h] [c] [e] 1 [c] [g] [h] [b] 2 [f] [d] [a] [d] 3 [g] [b] [e] [f] Das Array geht dann von 0 - 3 wie Spalten auch bezeichnet sind. Du kannst dann z.B. das erste c mit (0,2) ansprechen. |
Re: Memory in Delphi
hallo :)
kann mir noch jemand sagen wie man ein zweidimensionales array programmiert ?_? :oops: |
Re: Memory in Delphi
Delphi-Quellcode:
type zweidim = array of array of integer;
procedure MakeMatrix; var matrix: zweidim; x,y: Integer; begin x := 5; // länge erste dimension y := 5; // länge zweite dimension setLength(matrix, x, y); // array initilisieren // der einzelne x/y - Wert wird dann so angesprochen x := 0; y := 4; matrix[x,y] := 1; // dies würde dem 'untersten' Element in der ersten spalte eine 1 zuweisen end; |
Re: Memory in Delphi
Und noch eine Frage :)
wenn ich jetzt ein image1 habe und möchte diesem image1 per button druck eine bilddatei zuweisen ... wie mach ich das? im Objectinspector geht man da uf picture und dann auf (TBitmap) aber wie programmiert man das? |
Re: Memory in Delphi
Zitat:
|
Re: Memory in Delphi
Schreib im private Teil folgendes:
Delphi-Quellcode:
Fürs dynamische Laden eines Bildes in ein Image solltest du mal die Suche benutzen.
private
zweidim = array of array of integer; |
Re: Memory in Delphi
danke :)
aber leider bekomme ich dann immer ne fehlermeldung : ';' oder ':' erwartet aber '=' gefunden wenn ich dann : nehme geht es soweit ... aber dann sagt er: '[' erwartet aber 'OF' gefunden...
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private zweidim : array of array of integer; { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var matrix: zweidim; x,y: Integer; begin x := 5; // länge erste dimension y := 5; // länge zweite dimension setLength(matrix, x, y); // array initilisieren // der einzelne x/y - Wert wird dann so angesprochen x := 0; y := 4; matrix[x,y] := 1; // dies würde dem 'untersten' Element in der ersten spalte eine 1 zuweisen end; end; end. |
Re: Memory in Delphi
Wo steht denn
Delphi-Quellcode:
in deinem Source??? Vielleicht solltest du da mal
type
Delphi-Quellcode:
hinschreiben. Vielleicht hilft es?!
zweidim : array of array of integer;
MfG Florian :hi: |
Re: Memory in Delphi
Hau die lokale deklaration von
Delphi-Quellcode:
mal raus und nenne zweidim in matrix um.
matrix: zweidim;
Oder die andere Möglichkeit wäre:
Delphi-Quellcode:
zu schreiben.
type
zweidim : array of array of integer; TForm1 = class(TForm) Außerdem ist das vorletzte end zu viel! |
Re: Memory in Delphi
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type zweidim = array of array of integer; // <== hier musses hin! TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private // weil hier kommen membervariablen hin, keine typdefinitionen // da hat TPercon was verwechselt { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} [hier wie gehabt weiter...] |
Re: Memory in Delphi
Zitat:
|
Re: Memory in Delphi
Du hast zwei end; untereinander, eins davon musst Du löschen weil es zuviel ist.
|
Re: Memory in Delphi
Zitat:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private zweidim : array of array of integer; { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var matrix: zweidim; x,y: Integer; begin x := 5; // länge erste dimension y := 5; // länge zweite dimension setLength(matrix, x, y); // array initilisieren // der einzelne x/y - Wert wird dann so angesprochen x := 0; y := 4; matrix[x,y] := 1; // dies würde dem 'untersten' Element in der ersten spalte eine 1 zuweisen end; end. |
Re: Memory in Delphi
Hi!
Klinke mich auch mal in das Thema ein :oops: Habe mal gerade den letzten Code getestet, den Deven gepostet hat! Wenn ich den so übernehme, bekomme ich folgende Fehler: Zitat:
Delphi-Quellcode:
sodass sie so aussieht:
matrix: zweidim;
Delphi-Quellcode:
Kann das jemand erklären?
matrix: array of array of integer;
ciao fkerber |
Re: Memory in Delphi
Liste der Anhänge anzeigen (Anzahl: 1)
Hiho,
ich bin seit 40 min von wieder zu hause und recht gut angetrunken :roll: hab mich aber trotzdem mal kurz damit beschäftigt. raugekommen ist ein noch nicht fertiges Memory, dass nur auf verschiedenen Farben beruht. es wird nicht erkannt wenn alle felder aufgedeckt sind. auch hab ich mir keine gedanken darüer gmeacht ob das so überhaupt für dich nutzbar ist. aber es ist zumindest eine art ansatz. exe und source im anhang |
Re: Memory in Delphi
In dem Code von Phoenix ist alles richtig, genauso wie in der Beschreibung von mir oben. Einfach darauf mal aufbauen.
|
Re: Memory in Delphi
Hi!
Habe meinen Fehler gefunden, also auch die Lösung deines Problems Deven! Es müsste so aussehen:
Delphi-Quellcode:
Hoffe, das hilft!
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type zweidim = array of array of integer; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var matrix: zweidim; x,y: Integer; begin x := 5; // länge erste dimension y := 5; // länge zweite dimension setLength(matrix, x, y); // array initilisieren // der einzelne x/y - Wert wird dann so angesprochen x := 0; y := 4; matrix[x,y] := 1; // dies würde dem 'untersten' Element in der ersten spalte eine 1 zuweisen end; end. ciao fkerber |
Re: Memory in Delphi
also ich habe noch immer den Fehler mit dem OF
kann es daran liegen das ich noch mit Delphi 3 Programmiere? |
Re: Memory in Delphi
Hallo!
unser Lehrer behandelt das Thema auch, folgende Aufgabenstellung haben wir von ihm: ![]() vielleicht hilft dir das ja auch weiter :). Oder evtl kannst du mir da ja auch weiterhelfen, denn ich müsste noch das Mischen der Karten programmieren, wüsste aber nicht wie :( Gruß |
Re: Memory in Delphi
D3 kennt noch keien dynamischen Arrays. Hättest du deine Delphi Version mal im Profil eingetragen, hätte das viel zeit und Postings gespart.
|
Re: Memory in Delphi
*vorkopfpatsch*
Ein "array of array" kann D3 noch nicht. Tja, dann musste wohl (ist wahrscheinlich das einfachste) für jede reihe im Memory ein eigenes Array machen. Also Array 1: Felder 1 - 4 Array 2: Felder 5 - 8 Array 3: Felder 9 - 12 Array 4: Felder 13 - 16 Ansonsten bleibt das Prinzip aber gleich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 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