Autor Beitrag
thedarkside2
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 06.03.09 17:25 
Hallo,

ich bin neu hier im Board, und ich bin auch absolut neu in der Programmiersprache delphi.

Ich hab zwar jetzt das Buch Delphi für Kids durchgelesen und ein Paar Taschenrechner Projekte oder Zahlenraten und sowas
ausprobiert und selber geschrieben.
aber jetzt will ich mal mein eigenes Projekt starten.

Und zwar der Gedanke soll sein.

Ich habe 3 Felder für 3 Karten - hinter einer Karte befindet sich der Joker oder der Schatz :)

Leider scheitere ich bei dem Problem die Karten mischen zu lassen.

- ich habe es mit der procedure tauschen versucht also einfach nur text labe1 und label2 tauschen.

aber jetza wollte ich es mit zwei bildern ausprobieren - ich bringe das programm zwar zum laufen aber Die beiden Bilder
vertauschen sich nicht :( bitte helft mir.

Und sorry für meine doofen Fragen.

nochwas ich habe einen button gemacht der bei jedem klick eine neue position annimmt den hab ich umgeschrieben wenn man auf
button klickt dann ändert er random position. aber wenn ich das auf meine karten umschreibe dann flattern die irgendwo im formular rum.
ich wollte aber das ich 3 bilderrahmen habe und sichdaran bei Klick(Mischen) die bilder ändern.

Bitte helft mir.

Mein Programmcode für die beiden Bilder die getauscht werden sollen.:


Zuletzt bearbeitet von thedarkside2 am Fr 06.03.09 17:29, insgesamt 1-mal bearbeitet
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 06.03.09 17:28 
Moin und :welcome: im Forum!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]
Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
thedarkside2 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 06.03.09 17:31 
Hallo danke hab ich jetza gemacht :) hab mir auch deinen link angeschaut.

das mit den kategorien versteh ich aber noch ned so ganz wie sind die eingeteilt ? wenn ich allgemeine fragen habe?

bzw. probleme bei meinem programm. in welche sparte schreib ich das dann ?

Kannst du mir auch eine Antwort auf meine Frage geben?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 06.03.09 17:35 
Moin!

user profile iconthedarkside2 hat folgendes geschrieben Zum zitierten Posting springen:
das mit den kategorien versteh ich aber noch ned so ganz wie sind die eingeteilt ? wenn ich allgemeine fragen habe?
Generell gilt hier: Pro Thread eine Frage. :idea: Dann suchst du dir halt die deiner Meinung nach passendste Sparte aus und stellst die Frage dort. Wenn die Sparte nicht exakt passt, ist das nicht soo schlimm; notfalls verschiebt ein Teammitglied das Thema dann. ;)

user profile iconthedarkside2 hat folgendes geschrieben Zum zitierten Posting springen:
bzw. probleme bei meinem programm. in welche sparte schreib ich das dann ?
Zunächst mal ist das hier ganz OK.

user profile iconthedarkside2 hat folgendes geschrieben Zum zitierten Posting springen:
Kannst du mir auch eine Antwort auf meine Frage geben?
Du hast noch nicht deinen Quelltext gepostet, allerdings schon mal die Ankündigung als letzten Satz oben. Hol´ das doch mal grad nach. :)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
thedarkside2 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 06.03.09 17:39 
das wollte ich eig. auch :) aber ich glaub ich vergessen die finale version zu speichern ich bin gerade am tippen.
sobald er fertig ist bekommst du ihn allerdings kannst du mir vielleicht auch ohne quelltext auf die sprünge helfen.
das prinzip ist ja eig klar oder ?
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 06.03.09 17:44 
Moin!

user profile iconthedarkside2 hat folgendes geschrieben Zum zitierten Posting springen:
allerdings kannst du mir vielleicht auch ohne quelltext auf die sprünge helfen.
das prinzip ist ja eig klar oder ?
Ich denke schon. ;)

Was du brauchst, nennt man einen Dreiecks-Tausch. :idea: Dazu brauchst du eine Hilfsvariable des Datentyps, der getauscht werden soll. Beispiel mit Integer:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  a,b, temp: Integer;
begin
  a := 3;
  b := 5;
  ShowMessageFmt('a=%d b=%d',[a,b]);
  // tauschen
  temp := a;
  a := b;
  b := temp;
  ShowMessageFmt('a=%d b=%d',[a,b]);
Soviel zum Prinzip. In deinem Fall - ich schätze mal, du hast TImage-Komponenten genommen - wirst du die Eigenschaft .Left der Images tauschen müssen.

Zeig mal deinen Code dazu, dann sehen wir weiter. :)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
thedarkside2 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 07.03.09 15:21 
also ich hab jetza versucht den code nachzustellen. alllerrdings habe ich fehler im code die original seite find ich nicht merh
wo ich diese form herhabe. Naja egal hier einmal mein derzeitiger code.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
unit tauschen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure tauschen(var s1, s2 : TImage);
var temp : Timage;
begin
  temp := s1;
  s1 := s2;
  s2 := temp;
end;


procedure TForm1.Button1Click(Sender: TObject);
var s1, s2 : TImage;
begin
  s1 := Image1;
  s2 := Image2;

  tauschen(s1,s2);

  Image1 := s1;
  Image2 := s2;
end;
end.

was heißt diese Zeile ? hab ich noch gesehen sowas.

was bedeutet der ausdruck temp?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Teekeks
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Sa 07.03.09 16:26 
Der Ausdruck "temp" bezeichnet in deinem Fall eine von dir definierte Variable vom Typen TImage. Sie dient dir zum Tauschen der Bilder. (nur so nebenbei: du könntest die Variable auch z.B. "abcd" nennen) Ich würde dir allerdings empfelen nicht das Bild auszutauschen sondern die Parameter Immage1.left. Das sieht dann folgendermaßen aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure tausche(s1,s2:TImage);
var temp:integer;
begin
  temp:=s1.left;
  s1.left:=s2.left;
  s2.left:=temp;
end;

ps.: das:
ausblenden Delphi-Quelltext
1:
2:
Image1 := s1;
Image2 := s2;
brauchst du nicht machen...
thedarkside2 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 07.03.09 17:30 
super danke :) funktioniert prima. jetzt aber gleich zum nächsten thema wie mach ich das wenn ich 3 bilder habe.
dann funktioniert doch das tauschen nicht mehr oder? oder für 3 proceduren erstellen und diese dann mischen?
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
procedure tausche(s1,s2:TImage);
var temp:integer;
begin
  temp:=s1.left;
  s1.left:=s2.left;
  s2.left:=temp;
end;

procedure tauschen(s2,s3:TImage);
var temp:integer;
begin
  temp:=s2.left;
  s2.left:=s3.left;
  s3.left:=temp;
end;


procedure TForm1.Button1Click(Sender: TObject);
var s1, s2 : TImage;
begin
  s1 := Image1;
  s2 := Image2;

  tausche(s1,s2);

end;

var s2, s3 : TImage;
begin
  s2 := Image2;
  s3 := Image3;

  tauschen(s2,s3);

end;
end.


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Zuletzt bearbeitet von thedarkside2 am Sa 07.03.09 17:35, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19316
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 07.03.09 17:34 
Du solltest zuerst mischen und dann die Bilder danach an die entsprechenden Positionen schieben. ;-)
thedarkside2 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 07.03.09 17:37 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Du solltest zuerst mischen und dann die Bilder danach an die entsprechenden Positionen schieben. ;-)


aha und das heißt auf deutsch sorry das ich euch jetza so zulabere. aber ich hab halt wirklich noch nicht ahnung von delphi.
sorry.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19316
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 07.03.09 17:45 
Du musst ja irgendwo gespeichert haben welches Bild wo ist. Zum Beispiel in einem Array. Denn sonst wüsstest du ja nicht welches Bild eigentlich gerade wo ist.
Dort tauschst du dann die Werte aus und wenn du damit fertig bist, dann erst setzt du die Positionen der echten Bilder.

Zum Beispiel könntest du die Werte für Left in einem array of Integer speichern. Dann mischst du diese und setzt die danach. Erstes Bild bekommt dann in Left den Wert des ersten Eintrags des Array, das zweite den zweiten, etc.

Weißt du wie ein Array funktioniert?

Einen sehr guten Crashkurs findest du hier:
crashkurs.christian-stelzmann.de
und die neue Version speziell ab Turbo Delphi:
www.christian-stelzm...shkurs_reloaded.html
thedarkside2 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 07.03.09 18:53 
also die bedeutung von Arrays[ hab ich schon gelesen und auch schon benutzt.

Das ist doch sinnvoll wenn man zB 100 Variablen hat. dann braucht man icht alle einzeln schreiben sonderm
mit dem array befehl alle vereinen.

Das problem glaub ich ist weil ich nicht weiß wie Timage komponenete benutze.
Ich such mir das Symbol raus und ziehe das bild auf und unter objektionsinspector lade ich mir das bild rein.
aber wo lege ich die größe im quelltext fest. ich verändere derzeit die größe mit der maus. also in dem ich das
Bild einfach irgendwohin ziehe.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19316
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 07.03.09 19:05 
Wie du Left setzt hast du ja schon gesehen. Und wenn du einmal schaust welche Möglichkeiten es sonst noch gibt, dann wirst du Height, Width und Top finden. ;-)

Das findest du sowohl in der Hilfe als auch in der Syntaxergänzung, wenn du den Punkt hinter Image1 z.B. schreibst. (Oder du drückst Strg + Leertaste beim Schreiben eines Befehls.)

Und ein Array ist auch durchaus bei wenigen Werten sinnvoll.