Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   wie erstelle ich eine function mit aufruf & deklaration (https://www.delphipraxis.net/163675-wie-erstelle-ich-eine-function-mit-aufruf-deklaration.html)

sneumann 11. Okt 2011 08:41

wie erstelle ich eine function mit aufruf & deklaration
 
wie packe ich jetzt diese Anweisungen in eine Funktion die ich jederzeit aufrufen kann? + aufruf und deklaration?!

muss ich einfach davor schreiben zum deklarieren? Das packe ich dann oben zu public bzw private?!
und dann irgendwo im programm mit Connecten(); aufrufen?!

Delphi-Quellcode:
function Connecten()

begin
SerialPortNG1.SendString('0000sr' +#$05);
  if WaitForAnswer(100) < 0 then
    begin
      memoResult.Lines.Add('Error: No Answer on 4422');
      Exit;
    end;
  pbProgress.StepIt;
    if Ord(SerialPortNG1.ReadNextClusterAsString[1]) = 6    then    // Wenn Antwort =6 dann ist OKAY
    memoResult.Lines.Add('Connect erfolgreich')
    else
   memoResult.Lines.Add('Answer : '+IntToHex(Ord(SerialPortNG1.ReadNextClusterAsString[1]),2));
end;

{wenn Antwort nicht 06(ACKNOWLEDGE) dann zeige mir andere Antwort. Kann ich hier auch die komplette Antwort als String ausgeben?!? anstatt in Hex umwandeln?!}

Luckie 11. Okt 2011 08:46

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Guck dir bitte mal ein Grundlagentutorial an, da sollte das erklärt werden.

DeddyH 11. Okt 2011 08:48

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Bevor Du an der Hardware herumhantierst solltest Du Dich wohl besser zunächst mit den Grundlagen beschäftigen.
http://www.delphi-treff.de/tutorials/grundlagen/
http://www.delphi-treff.de/downloads/e-book/

Union 11. Okt 2011 09:17

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Ich schlage Dir auch vor, Dich erst mal mit den Sprachgrundlagen auseinanderzusetzen. Zunächst einmal braucht eine Function einen Rückgabewert:
Delphi-Quellcode:
function Connecten : string;
Dieser wird mittels result gesetzt.

Delphi-Quellcode:
function Hallo : string;
begin
   result := 'Hallo';
end;
Die Implementierung erfolgt im Implementation Abschnitt. Damit die Funktion aufrufbar wird, muss sie entweder in der gleichen Sourcedatei oberhalb der aufrufenden Funktion stehen oder deklariert (Funktionskopf) werden. Soll eine Funktion aus einer anderen Sourcecodedatei verwendet werden, muss deren Deklaration im Interface Abschnitt der sie enthaltenen Sourcecode Datei erfolgen.

Die Sourcecode Datei mit der Funktion muss oberhalb des ersten Aufrufes mit der uses Klausel eingebunden werden.

EWeiss 11. Okt 2011 09:30

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Zitat:

Zunächst einmal braucht eine Function einen Rückgabewert:
Logisch!

Nur das ist keine function sondern eine procedure da hier nichts zurückgegeben wird.

gruss

sneumann 11. Okt 2011 11:34

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Zitat:

Zitat von EWeiss (Beitrag 1129718)
Zitat:

Zunächst einmal braucht eine Function einen Rückgabewert:
Logisch!

Nur das ist keine function sondern eine procedure da hier nichts zurückgegeben wird.

gruss

okay habe ein paar andere prozeduren jetzt schon hinbekommen danke!
was mache ich jedoch bei dieser Prozedur falsch? Er zeigt mir an inkompatible Typen String und Integer
Ich will einen Temperaturwert aus einem Gerät lesen.
temp soll die Temperatur sein, die ich als Zahl dann sozusagen zurück bekomme...am Besten ja Float eigentlich?!

Delphi-Quellcode:
      // --------------------Messwert auslesen----------------------------
   function messwertLesen : integer;
      var temp: integer;
      begin
        temp := StrToInt(SerialPortNG1.ReadNextClusterAsString);
        SerialPortNG1.SendString(#$02 + ':FETC' +#$0A +#$03);
      if WaitForAnswer(100) < 0 then
          memoResult.Lines.Add('Error: No Answer on 4422')
        else
          memoResult.Lines.Add('Messwert : ' + IntToStr(temp));
          result := IntToStr(temp);
      end;

rufe die funktion folgendermaßen auf:
Delphi-Quellcode:
messwertLesen;

EDIT:
kennt jemand SerialNG? was steht denn eigentlich hinter dem ReadNextCluster? Er liest bei mir glaub ich die Antwort vom Gerät ab aber als String?! als Integer?? bzw was macht die Funktion genau und was steckt drin?!
Will die Antwort als Float wieder geben zum Beispiel: 25.5 Grad Celius halt. Wie finde ich jetzt heraus ob er mir überhaupt so eine Zahl liefert oder etwas ganz anderes? Mit dem Befehl Fetc? lese ich den Messwert des Geräts aus laut meines Handbuchs..

hathor 11. Okt 2011 11:44

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Von GRUNDLAGENKENNTNISSEN bist Du weit entfernt!

Willst Du die GRUNDLAGENKENNTNISSE wirklich hier im "Trial and Error"-Verfahren erwerben?

- Du wirfst Funktionen und Prozeduren wild durcheinander
- einen String kannst Du nicht einer Integer-Variablen zuordnen
- wenn Du eine Funktion aufrufst, musst Du auch das Ergebnis zuordnen
- das letzte IntToStr(temp) ist auch falsch

Union 11. Okt 2011 11:45

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Delphi-Quellcode:
function messwertLesen : double;
begin
  // Wie sehen die Stringdaten genau aus?
  result := StrToFloat(SerialPortNG1.ReadNextClusterAsString);
  SerialPortNG1.SendString(#$02 + ':FETC' +#$0A +#$03);
  if WaitForAnswer(100) < 0 then
     memoResult.Lines.Add('Error: No Answer on 4422')
  else
     memoResult.Lines.Add(Format('Messwert : %f', [result]));
end;
Aber die ursprüngliche Logik sieht mir schon seltsam aus. Das Senden von FETCH sollte ja wahrscheinlich einen Messwert anfordern, der muss erst noch empfangen werden. Mach Dir mal ein Ablaufdiagramm, das setzt Du in Kommentare um und dann schreibst Du den Source dazu.

Nersgatt 11. Okt 2011 11:47

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Ist müßig, auf Grundlagenkenntnisse hinzuweisen. Denn diese Hinweise ignoriert er schon seit Tagen. Auch im DF sind ihm mehrfach die allseits bekannten Grundlagentutorials ans Herz gelegt worden. Zeitverschwendung.

hathor 11. Okt 2011 12:03

AW: wie erstelle ich eine function mit aufruf & deklaration
 
Diese Funktionen in #6 und #8 werden wahrscheinlich nicht funktionieren:

- erst muss man die Daten anfordern
- warten
- dann muss man sie auf Plausibilität prüfen (z.B. Stringlänge, welche Zeichen dürfen enthalten sein, wenn negativ: neu anfordern
- dann evtl. umwandeln in ein anderes Format


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