Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typen nicht miteinander vereinbar (https://www.delphipraxis.net/94693-typen-nicht-miteinander-vereinbar.html)

fransa 25. Jun 2007 16:58


Typen nicht miteinander vereinbar
 
So gut mit Delphi kenne ich mich noch nicht aus, deshalb wäre ich dankbar, wenn mir jemand sagen könnte was es bedeutet, wenn Delphi sagt, Typen nicht miteinander vereinbar. Ich brauche einfach nur den Mittelwert aus a-j.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j,mittelwert:real;
begin
  j:=strtofloat(edit10.text);
  i:=strtofloat(edit9.text);
  h:=strtofloat(edit8.text);
  g:=strtofloat(edit7.text);
  f:=strtofloat(edit6.text);
  e:=strtofloat(edit5.text);
  d:=strtofloat(edit4.text);
  c:=strtofloat(edit3.text);
  b:=strtofloat(edit2.text);
  a:=strtofloat(edit1.text);

 mittelwert:=(a+b+c+d+e+f+g+h+i+j)/10;
 label12.caption:=mittelwert;

end;

lbccaleb 25. Jun 2007 17:01

Re: Typen nicht miteinander vereinbar
 
probier es mal so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j,mittelwert:integer;
begin
  j:=strtoint(edit10.text);
  i:=strtoint(edit9.text);
  h:=strtointedit8.text);
  g:=strtoint(edit7.text);
  f:=strtoint(edit6.text);
  e:=strtoint(edit5.text);
  d:=strtoint(edit4.text);
  c:=strtoint(edit3.text);
  b:=strtoint(edit2.text);
  a:=strtoint(edit1.text);

mittelwert:=(a+b+c+d+e+f+g+h+i+j) div 10;
label12.caption:=inttostr(mittelwert);

DeddyH 25. Jun 2007 17:02

Re: Typen nicht miteinander vereinbar
 
Delphi-Quellcode:
label12.caption:=FloatToStr(mittelwert);
BTW: Ich würde statt real Double nehmen.

fransa 25. Jun 2007 17:14

Re: Typen nicht miteinander vereinbar
 
Vielen Dank, dass hat alles geklappt.

Wenn ich die Werte von a-j nun tauschen möchte, also j:=i; i:=h; h:=g; ... muss ich das dann so schreiben oder muss ich das über eine Hilfsvariable machen?

lbccaleb 25. Jun 2007 17:22

Re: Typen nicht miteinander vereinbar
 
musst du über ne hilfsvariable machen, weil bei der letzten bekommst du sonnst probleme...

fransa 25. Jun 2007 17:30

Re: Typen nicht miteinander vereinbar
 
Ich habe jetzt j:=z; ,aber trotzdem werden die Zahlen nicht getauscht.
i:=j;
z:=i;

lbccaleb 25. Jun 2007 17:38

Re: Typen nicht miteinander vereinbar
 
wieso denn überhaupt tauschen?? kannst du die var nicht so weiterverwenden??

silver-moon-2000 25. Jun 2007 17:39

Re: Typen nicht miteinander vereinbar
 
Zitat:

Zitat von fransa
Ich habe jetzt j:=z; ,aber trotzdem werden die Zahlen nicht getauscht.
i:=j;
z:=i;

Hi, ich denke, sollte es besser passen, wenn du i und j tauschen willst:
Delphi-Quellcode:
z:=j;
j:=i;
i:=z;

fransa 25. Jun 2007 17:44

Re: Typen nicht miteinander vereinbar
 
Das habe ich auch schon probiert, aber dennoch stehen die Zahlen still. :?

DeddyH 25. Jun 2007 17:46

Re: Typen nicht miteinander vereinbar
 
Oder am Besten gleich in eine Prozedur packen.
Delphi-Quellcode:
procedure swapvalues(var a,b: Double);
var tmp: Double;
begin
  tmp := a;
  a := b;
  b := tmp;
end;

fransa 25. Jun 2007 18:00

Re: Typen nicht miteinander vereinbar
 
Ich habe jetzt auch eine Prozedur drin, aber es geht immernoch nicht. Entweder es liegt an mir oder am pc. :gruebel:

Chemiker 25. Jun 2007 18:05

Re: Typen nicht miteinander vereinbar
 
Hallo fransa,

Wie stellst Du den fest, dass die Zahlen nicht getaucht werden?



Bis bald Chemiker

DeddyH 25. Jun 2007 18:07

Re: Typen nicht miteinander vereinbar
 
Mach doch mal einen Schreibtischtest.

fransa 25. Jun 2007 18:21

Re: Typen nicht miteinander vereinbar
 
Zu Chemiker:
Na ich sehen es auf dem Formblatt. Dia Aufgabe ist es aus 10 Börsenmeßwerten ein Durchschnitt zu errechnen, was jetzt auch klappt, aber es sollen immer die letzten 10 Tage sein. So ist der 2. Tag irgendwann der 3. und am nächsten Tag der 4. usw.. Deshalb dachte ich mir, dass der 2. dann der 3. ist und der 9.(i) der 10.(j) usw..

DeddyH 25. Jun 2007 18:25

Re: Typen nicht miteinander vereinbar
 
Deine Zahlen kommen aus 10 Edits (Tag 1). Am nächsten Tag kommt eine Zahl dazu, eine fliegt raus. Da nur ein Wert geändert wird, kannst Du 9 Edits vorbelegen (nun überleg mal, wie: wo kommt der Wert hin, der in Edit1 stand?). Alles klar?

lbccaleb 25. Jun 2007 18:30

Re: Typen nicht miteinander vereinbar
 
meinst du so??:

Delphi-Quellcode:
  j:=i;
  i:=h;
  h:=g;
  g:=f;
  f:=e;
  e:=d;
  d:=c;
  c:=b;
  b:=a;
  a:=; //neuer wert für den aktuellen tag!!
in dem fall solltest du die var. aber nicht in der procedure:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

sondern direkt im hauptquellcode, zb unter der uses clausel deklarieren...
damit erreichst du, das du von verschieden proceduren darauf zurückgreifen kannst..

Chemiker 25. Jun 2007 18:33

Re: Typen nicht miteinander vereinbar
 
Hallo fransa,

verstehe ich das dann Richtig, dass der 10 Wert (j) nach der neuen Eingabe wegfällt?


Bis bald Chemiker

fransa 25. Jun 2007 18:37

Re: Typen nicht miteinander vereinbar
 
Verstehe ich dich dann richtig,wenn du tag2:=tag1, tag3:=tag2,....meinst.

DeddyH 25. Jun 2007 18:42

Re: Typen nicht miteinander vereinbar
 
Was passiert denn, wenn Du das so machst?
Tag2 := Tag1
Tag3 := Tag2
Tag4 := Tag3
...
etc.

Alle Tage haben denselben Wert, nämlich den von Tag1.

fransa 25. Jun 2007 18:48

Re: Typen nicht miteinander vereinbar
 
Das ist mir beim Schreiben auch aufgefallen, aber trotzdem stehen die Zahlen still. Sie werden nocht nicht einmal alle gleich. Das verstehe ich am aller wenigsten, dass sie sich nicht verändern.

Chemiker 25. Jun 2007 18:50

Re: Typen nicht miteinander vereinbar
 
Hallo fransa,

vielleicht kannst Du mal etwas mehr Quell-Code zeigen, weil es uns etwas schwer fällt Dir sonst weiter zu helfen.

Bis bald Chemiker

Chemiker 25. Jun 2007 18:57

Re: Typen nicht miteinander vereinbar
 
Hallo fransa,

nach dem Tauschen der Werte, müssen die einzelnen Variablen wieder den entsprechenden TEdit´s zugewiesen werden.

Edit2.Text:= b;
:
:
Edit10.Text:= j;

Bis bald Chemiker

fransa 25. Jun 2007 19:03

Re: Typen nicht miteinander vereinbar
 
An Chemiker:
Das ist der Quell-Code zum Tauschen:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j:real;
begin
  j:=strtofloat(edit10.text);
  i:=strtofloat(edit9.text);
  h:=strtofloat(edit8.text);
  g:=strtofloat(edit7.text);
  f:=strtofloat(edit6.text);
  e:=strtofloat(edit5.text);
  d:=strtofloat(edit4.text);
  c:=strtofloat(edit3.text);
  b:=strtofloat(edit2.text);
  a:=strtofloat(edit1.text);

  b:=a;
  c:=b;
  d:=c;
  e:=d;
  f:=e;
  g:=f;
  h:=g;
  i:=h;
  j:=i;
 end;
Soll ich dann dass mit edit2.text:=b vor c:=b einfügen?

Chemiker 25. Jun 2007 19:21

Re: Typen nicht miteinander vereinbar
 
Hallo fransa,

das sind doch nur lokale Variable, nach dem verlassen der TForm1.Button2Click Procedure sind doch auch die Variablen nicht mehr vorhanden.



Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j:real; // Auf double ändern !!!!!!!
begin
  j:=strtofloat(edit10.text);
  i:=strtofloat(edit9.text);
  h:=strtofloat(edit8.text);
  g:=strtofloat(edit7.text);
  f:=strtofloat(edit6.text);
  e:=strtofloat(edit5.text);
  d:=strtofloat(edit4.text);
  c:=strtofloat(edit3.text);
  b:=strtofloat(edit2.text);
  a:=strtofloat(edit1.text);

  b:=a;
  c:=b;
  d:=c;
  e:=d;
  f:=e;
  g:=f;
  h:=g;
  i:=h;
  j:=i;


  Edit1.text:= FloatToStr(a);
  Edit2.text:= FloatToStr(b);
   :
   :
  Edit10.text:= FloatToStr(j);

 
 
end;
Bis bald Chemiker

Chemiker 25. Jun 2007 19:53

Re: Typen nicht miteinander vereinbar
 
Hallo fransa,

auf dem Formular 11 TEdit, 1 TLabel und 2 TButton platzieren.

Sie entsprechend Beschriften (Edit.Name usw.).

Delphi-Quellcode:
Unit DPBeispielUnit;

interface

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

type
  TForm1 = class(TForm)
    Tag4Edit: TEdit;
    Tag2Edit: TEdit;
    Tag3Edit: TEdit;
    Tag1Edit: TEdit;
    Tag5Edit: TEdit;
    Tag7Edit: TEdit;
    Tag6Edit: TEdit;
    Tag8Edit: TEdit;
    Tag9Edit: TEdit;
    Tag10Edit: TEdit;
    Durchschnitt: TLabel;
    MittelWertBerechenButton: TButton;
    NeuerTagButton: TButton;
    NeuerTagEdit: TEdit;
    procedure MittelWertBerechenButtonClick(Sender: TObject);
    procedure NeuerTagButtonClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MittelWertBerechenButtonClick(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j: double;
begin
  a:= strToFloat(Tag1Edit.Text);
  b:= strToFloat(Tag2Edit.Text);
  c:= strToFloat(Tag3Edit.Text);
  d:= strToFloat(Tag4Edit.Text);
  e:= strToFloat(Tag5Edit.Text);
  f:= strToFloat(Tag6Edit.Text);
  g:= strToFloat(Tag7Edit.Text);
  h:= strToFloat(Tag8Edit.Text);
  i:= strToFloat(Tag9Edit.Text);
  j:= strToFloat(Tag10Edit.Text);
  Durchschnitt.Caption:= FloatToStr(a+b+c+d+e+f+g+h+i+j/10);
end;

procedure TForm1.NeuerTagButtonClick(Sender: TObject);
begin

  Tag10Edit.Text:= Tag9Edit.Text; // Der Wert vom 10 Tag fällt weg.
  Tag9Edit.Text:= Tag8Edit.Text;
  Tag8Edit.Text:= Tag7Edit.Text;
  Tag7Edit.Text:= Tag6Edit.Text;
  Tag6Edit.Text:= Tag5Edit.Text;
  Tag5Edit.Text:= Tag4Edit.Text;
  Tag4Edit.Text:= Tag3Edit.Text;
  Tag3Edit.Text:= Tag2Edit.Text;
  Tag2Edit.Text:= Tag1Edit.Text;
  Tag1Edit.Text:= NeuerTagEdit.Text; // Neuer Wert eintragen.
end;

end.


Bis bald Chemiker

fransa 26. Jun 2007 19:09

Re: Typen nicht miteinander vereinbar
 
Das hat jetzt alles gelappt. Vielen, vielen Dank für die Hilfe :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 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