AGB  ·  Datenschutz  ·  Impressum  







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

Taschenrechner Ausgabe

Ein Thema von safak67 · begonnen am 5. Jun 2009 · letzter Beitrag vom 8. Jun 2009
Thema geschlossen
Seite 7 von 8   « Erste     567 8      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#61

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 10:24
Unter interface gibt es eine Zeile, die mit uses beginnt. An die darauffolgende Liste hängst Du StrUtils mit Komma getrennt hinten dran.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
 
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#62

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 10:35
Das mindeste wäre gewesen erst einmal die Delphi-Hilfe aufzurufen.
Wenn du nach "uses" suchst, erhältst du als erstes Ergebnis "Programme und Units".
Und da steht wirklich alles sehr gut erklärt, was man du zu diesem Thema wissen musst.
 
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#63

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 10:44
Safak67, welche Delphi Version verwendest Du eigentlich? (Sorry wenn es schonmal irgendwo geschrieben wurde)

PosEx gibt z.B. bei Delphi 5 noch nicht.
 
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#64

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 10:45
Zitat von safak67:
Zitat von jaenicke:
Zitat von safak67:
[DCC Fehler] Calculator_Main.PAS(36): E2065 Ungenügende Forward- oder External-Deklaration: 'TFormTR.spResultClick'
Hast du denn spResultClick unter implementation definiert?
Unter implementation ist garnichts..
Wenn unterhalb von implementation bis zum Ende der Unit kein Quelltext zu TFormTR.spResultClick folgt, dann stimmt die Fehlermeldung, dann fehlt die Definition zu der Deklaration oben...
Sebastian Jänicke
AppCentral
 
safak67

Registriert seit: 22. Mär 2009
87 Beiträge
 
#65

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 10:48
danke blup habe es gelesen.. eine letzte frage habe ich noch.. kann mir einer ausführlich erklären am besten kommentieren was hier gemacht wird...
Delphi-Quellcode:
{ermittelt aus einer Reihe von Operatoren den,
der am weitesten Rechts im Term auftaucht}
 
function FindOperator(const ATerm, AOperatoren: string;
  out AOp: Char; out APos: Integer): Boolean;
var
  i, iPos: Integer;
  Op: Char;
begin
  AOp := #0;
  APos := 0;
  Result := False;
  for i := 1 to Length(AOperatoren) do
  begin
    Op := AOperatoren[i];
    iPos := APos;
    repeat
      iPos := PosEx(Op, ATerm, iPos + 1);
      if iPos > APos then
      begin
        AOp := Op;
        APos := iPos;
        Result := True;
      end;
    until (iPos = 0);
  end;
end;

function BerechneTerm(ATerm: string): Double;
const
  OperatorLevel: array[0..1] of string = ('+-', '*/');
var
  Op: Char;
  i, iPos: Integer;
  Value1, Value2: Double;
begin
  for i := Low(OperatorLevel) to High(OperatorLevel) do
  begin
    if FindOperator(ATerm, OperatorLevel[i], Op, iPos) then
    begin
      Value1 := BerechneTerm(Copy(ATerm, 1, iPos - 1));
      Value2 := BerechneTerm(Copy(ATerm, iPos + 1, Length(ATerm)));
      case Op of
        '+': Result := Value1 + Value2;
        '-': Result := Value1 - Value2;
        '*': Result := Value1 * Value2;
        '/': Result := Value1 / Value2;
      else
        raise Exception.Create(Format('undefinierter Operator ''%s''', [Op]));
      end;
      Exit;
    end;
  end;
  Result := StrToFloat(ATerm);
end;
 
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#66

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 11:00
Die Frage ist doch eher was du daran nicht verstehst...
Ich meine, wenn du den Quelltext durchgehst, dann musst du doch sehen was du nicht verstehst, und dann kannst du das doch konkret fragen.
Sebastian Jänicke
AppCentral
 
safak67

Registriert seit: 22. Mär 2009
87 Beiträge
 
#67

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 11:21
Delphi-Quellcode:
function FindOperator(const ATerm, AOperatoren: string;
  out AOp: Char; out APos: Integer): Boolean;
was hat das mit out´s an sich..?

AOp := #0; wieso #0?

 OperatorLevel: array[0..1] of string = ('+-', '*/'); was bedeutet die Zeile?

[delphi]raise Exception.Create(Format('undefinierter Operator ''%s''', [Op]));
wann kommt die Fehlermeldung?
 
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#68

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 11:27
Zitat von safak67:
was hat das mit out´s an sich..?
Das bedeutet, das in diese Variable ein Wert in der aufgerufenen Funktion hineingelegt wird. Also quasi ein zusätzlicher Rückgabewert statt eines Wertes, den die Funktion bekommt.

Zitat von safak67:
AOp := #0; wieso #0?
Das ist das Nullzeichen, also "kein Zeichen". Das steht da, da sonst der Inhalt der übergebenen Variable nach dem Aufruf von FindOperator undefiniert sein könnte.

Zitat von safak67:
[delphi]raise Exception.Create(Format('undefinierter Operator ''%s''', [Op]));
wann kommt die Fehlermeldung?
Die Exception wird sofort ausgelöst und rückwärts durch die Aufrufkette zurückgereicht. Das heißt zuerst dahin wo BerechneTerm aufgerufen wurde, wenn da kein try..except/finally steht, dass die Exception abfängt, wird sie weiter gereicht an die Prozedur, die wiederum die aufgerufen hat, die BerechneTerm aufgerufen hat.
Und so weiter. Sollte nirgends der Fehler abgefangen werden, kommt von Windows die Meldung, dass das Programm beendet werden muss.
Sebastian Jänicke
AppCentral
 
safak67

Registriert seit: 22. Mär 2009
87 Beiträge
 
#69

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 11:47
wieso berechnet die funktion nicht mit negativen?
 
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#70

Re: Taschenrechner Ausgabe

  Alt 8. Jun 2009, 12:13
Vielleicht weil das Minuszeichen als Operator benutzt wird? Denn ob das hinter einem anderen Operator kommt, wird ja nicht abgeprüft. Das solltest du aber im Debugger auch sehen was da passiert.
Sebastian Jänicke
AppCentral
 
Thema geschlossen
Seite 7 von 8   « Erste     567 8      


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 04:31 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