Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Variablen Problem (https://www.delphipraxis.net/177775-variablen-problem.html)

Luki206 26. Nov 2013 17:16

Variablen Problem
 
Hi,
ich hatte einige Zeit, zum testen, Lazarus benutzt nur jetzt habe ich mir die Starter Version von Delphi XE5 zugelegt. Jetzt mein Problem: ich wollte eigentlich nichts anderes machen als ein paar Variablen zuweisen aus einem Edit nur bekomme ich einen Fehler: [dcc32 Fehler] haupt.pas(128): E2003 Undeklarierter Bezeichner: 'EdPreis'. Da ich auch noch zwei Checkboxen auswerten wollte kam mir ein ähnlicher Fehler obwohl ich es eigentlich genau so gemacht habe wie in Lazarus..
Code:
Delphi-Quellcode:
procedure ZuBestell(var fisch : String; preis:Real);
var schon, zu : Real;
begin
 schon := StrToFloat(EdPreis.Text);
 if (CbEinsatz.Checked = true) then
  Bestell.Lines.Add('*'+fisch+'[Helfer Einsatz]*');
  else
  if CbPrivat.Checked then
  Bestell.Lines.Add('*'+fisch+'[Helfer Privat]*');
  zu := schon+0.50;
  EdPreis.Text := FloatToStr(zu);
  else
  Bestell.Lines.Add('*'+fisch+'*');
  zu := schon+preis;
  EdPreis.Text := FloatToStr(zu);
end;
Danke
Luki :)

PS: Variablennamen sind abgeändert ;)

DeddyH 26. Nov 2013 17:27

AW: Variablen Problem
 
Wenn Du in einer regulären Routine auf Komponenten zugreifen willst, musst Du schon die Formularinstanz, zu der die Komponenten gehören, mit angeben. Die bessere Alternative wäre aber IMO, daraus eine Methode des Formulars zu machen.

bcvs 26. Nov 2013 17:29

AW: Variablen Problem
 
Kann es sein, dass das eine Klassenmethode deiner Form sein soll. Demnach musste es heißen:

Delphi-Quellcode:
procedure TIrgendeineForm.ZuBestell(var fisch : String; preis:Real);

Natcree 26. Nov 2013 17:34

AW: Variablen Problem
 
Schau mal ob es edpreis.text in deiner Form Gibt !!! Ich schätzemal es ist ein Editfeld richtig? wenn nicht dann das editfeld auf deine form ziehen und dementsprechend umbenennen. oder als als var hinzufügen
Delphi-Quellcode:
var
edpreis:tedit;

Luki206 26. Nov 2013 17:53

AW: Variablen Problem
 
Ok hat sich erledigt. Das von bcvs hat geklappt. Danke ;) @DaddyH: war das, was du mir beschrieben hast, eigentlich zum Teil das selbe was auch bcvs geschrieben hat?

DeddyH 26. Nov 2013 18:37

AW: Variablen Problem
 
Japp.

himitsu 26. Nov 2013 19:18

AW: Variablen Problem
 
Dann fehlen in dem Code auch noch ein paar Begin&End.

Und die Codeformatierung ist grauenhaft, bzw. praktisch garnicht vorhanden.

Und du hast einige Codezeilen mehrfach, die man auflösen könnte.

Bei Preisen kannst du dir überlegen, ob Real das Richtige ist und ob nicht vielleicht Currency besser wäre.
- Delphi-Referenz durchsuchenCurrency, Delphi-Referenz durchsuchenStrToCurr, Delphi-Referenz durchsuchenCurrToStr ...

Den Vergleich auf True und False solltest du dir besser abgewöhnen.
Delphi-Quellcode:
if x then
statt
Delphi-Quellcode:
if x = true then
und
Delphi-Quellcode:
if not x then
statt
Delphi-Quellcode:
if x = false then
.

Das hier geht ja so nicht:
Delphi-Quellcode:
procedure ZuBestell(var fisch : String; preis:Real);
var schon, zu : Real;
begin
  schon := StrToFloat(EdPreis.Text);
  if CbEinsatz.Checked then
    Bestell.Lines.Add('*'+fisch+'[Helfer Einsatz]*') // kein semikolon, da ein ELSE direkt folgt
  else
    if CbPrivat.Checked then
      Bestell.Lines.Add('*'+fisch+'[Helfer Privat]*');
  zu := schon+0.50;
  EdPreis.Text := FloatToStr(zu);
  else // das gehört nurgenwo dazu
  Bestell.Lines.Add('*'+fisch+'*');
  zu := schon+preis;
  EdPreis.Text := FloatToStr(zu);
end;
Ich vermute aber mal, du wolltest es in etwa so haben?
Delphi-Quellcode:
procedure ZuBestell(var fisch : String; preis:Real);
var schon, zu : Real;
begin
  schon := StrToFloat(EdPreis.Text);
  if CbEinsatz.Checked then
    Bestell.Lines.Add('*'+fisch+'[Helfer Einsatz]*');
  else
    if CbPrivat.Checked then begin
      Bestell.Lines.Add('*'+fisch+'[Helfer Privat]*');
      zu := schon+0.50;
      EdPreis.Text := FloatToStr(zu);
    end else begin
      Bestell.Lines.Add('*'+fisch+'*');
      zu := schon+preis;
      EdPreis.Text := FloatToStr(zu);
    end;
end;

Delphi-Quellcode:
procedure ZuBestell(var fisch : String; preis:Real);
var PreisNeu : Real;
begin
  if CbEinsatz.Checked then
    Bestell.Lines.Add('*' + fisch + '[Helfer Einsatz]*')
  else begin
    PreisNeu := StrToFloat(EdPreis.Text); // braucht man natürlich nur auslesen, wenn es benötigt wird
    if CbPrivat.Checked then begin
      Bestell.Lines.Add('*' + fisch + '[Helfer Privat]*');
      PreisNeu := PreisNeu + 0.50;
    end else begin
      Bestell.Lines.Add('*' + fisch + '*');
      PreisNeu := PreisNeu + Preis;
    end;
    EdPreis.Text := FloatToStr(PreisNeu); // war jetzt zwar nur eine doppelte Zeile, aber man kann ja mal klein anfangen
  end;
end;

Luki206 26. Nov 2013 20:12

AW: Variablen Problem
 
@himitsu: ich hatte gemerkt, das es so wie ich es hier rein gestellt hatte, das es so nicht geht ;) ich hatte es nach dem zweiten Beispiel von dir gemacht
Danke :)

DeddyH 26. Nov 2013 20:46

AW: Variablen Problem
 
Ich frage mich, wieso fisch als Variablen-Parameter übergeben, dann aber nirgends geändert wird.

himitsu 26. Nov 2013 21:06

AW: Variablen Problem
 
Zitat:

Zitat von DeddyH (Beitrag 1237537)
Ich frage mich, wieso fisch als Variablen-Parameter übergeben, dann aber nirgends geändert wird.

Das wird verwendet, aber man übersieht es wohl zu leicht :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:01 Uhr.
Seite 1 von 2  1 2      

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