![]() |
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?!} |
AW: wie erstelle ich eine function mit aufruf & deklaration
Guck dir bitte mal ein Grundlagentutorial an, da sollte das erklärt werden.
|
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.
![]() ![]() |
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:
Dieser wird mittels result gesetzt.
function Connecten : string;
Delphi-Quellcode:
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.
function Hallo : string;
begin result := 'Hallo'; end; Die Sourcecode Datei mit der Funktion muss oberhalb des ersten Aufrufes mit der uses Klausel eingebunden werden. |
AW: wie erstelle ich eine function mit aufruf & deklaration
Zitat:
Nur das ist keine function sondern eine procedure da hier nichts zurückgegeben wird. gruss |
AW: wie erstelle ich eine function mit aufruf & deklaration
Zitat:
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.. |
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 |
AW: wie erstelle ich eine function mit aufruf & deklaration
Delphi-Quellcode:
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.
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; |
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.
|
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