Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Funktionen und Prozeduren (https://www.delphipraxis.net/165563-funktionen-und-prozeduren.html)

Slashmob 5. Jan 2012 20:34

Funktionen und Prozeduren
 
Moin zusammen,

zurzeit bearbeite ich wiedermal eine Projektaufgabe, die viele Prozeduren und Funktionen beinhaltet. Die Aufgabenstellung bereitet mir schon Schwierigkeiten. Bin noch Anfänger und die gesamte Aufgabe erscheint mir ziemlich schwer und unübersichtlich. Ich weiß gar nicht wo ich anfangen soll...


Kann mir wer bei diesem Abschnitt behilflich sein?

1. Eine Funktion, die eine Kommentarzeile verwirft, d.h. überspringt.
Delphi-Quellcode:
function Verwerfe_Kommentarzeile(s:string):boolean; // überspringt die Kommentarzeile
    var return_wert:boolean;
       position:integer;
       begin
            If (s[1]='/') and (s[2]='/') then    // Ist der Ansatz richtig??
               result=true;
            else
            result=false;
    end;
2. Eine Prozedur, die Groß- und Kleinschreibung ignoriert.
Delphi-Quellcode:
procedure erlaube_gross_Kleinschreibung(var s:string);
       begin
            s:=uppercase(s); // Großschreibung
    end;
3. Eine Prozedur, die Kommentare an bestimmten Positionen verwirft, d.h löscht.
Delphi-Quellcode:
 procedure bereinige_Datensatz_von_Kommentaren(var s:string);
    // löscht im Datensatz den folgenden Kommentar
    var
       position:integer;
       begin
    end;
4. Eine Prozedur, die führende Leerzeichen löscht.
Delphi-Quellcode:
 procedure loesche_fuehrende_Leerzeichen(var s:string);
       begin
            while s[1]= '' do             // Passt das so?
            delete (s,1,1);  
       end;

Lemmy 5. Jan 2012 21:03

AW: Funktionen und Prozeduren
 
hi,

so richtig versteh ich nicht, aber schau mal in der Hilfe nach unter:
Aufgabe 1: POS (geht aber auch so)
Aufgabe 2: ???
Aufgabe 3: POS und COPY
Aufgabe 4: TRIM

Grüße

Sir Rufo 5. Jan 2012 21:46

AW: Funktionen und Prozeduren
 
Ich weiß ja nicht wer die Funktions-/Prozedur-Namen vergeben hat, aber die Funktionen passen nicht zur Benennung.

Diese Funktion verwirft oder überspringt keine Kommentarzeile, sondern prüft, ob es sich um eine Kommentarzeile handelt.
Der Name ist also verwirrend und sollte daher auf
Delphi-Quellcode:
function Ist_Kommentarzeile( const s : string ) : Boolean;
geändert werden - oder die Funktion macht nicht das, was sie eigentlich machen soll ;)
Zitat:

Zitat von Slashmob (Beitrag 1144530)
1. Eine Funktion, die eine Kommentarzeile verwirft, d.h. überspringt.
Delphi-Quellcode:
function Verwerfe_Kommentarzeile(s:string):boolean; // überspringt die Kommentarzeile
    var return_wert:boolean;
       position:integer;
       begin
            If (s[1]='/') and (s[2]='/') then    // Ist der Ansatz richtig??
               result=true;
            else
            result=false;
    end;

Was soll diese Prozedur denn nun? Groß- und Kleinschreibung ignorieren? erlauben?
Aktuell macht diese Prozedur nichts von alledem, sondern wandelt alle Zeichen in Großbuchstaben um.
Zitat:

Zitat von Slashmob (Beitrag 1144530)
2. Eine Prozedur, die Groß- und Kleinschreibung ignoriert.
Delphi-Quellcode:
procedure erlaube_gross_Kleinschreibung(var s:string);
       begin
            s:=uppercase(s); // Großschreibung
    end;

ok, die ist wohl noch nicht fertig :)
Zitat:

Zitat von Slashmob (Beitrag 1144530)
3. Eine Prozedur, die Kommentare an bestimmten Positionen verwirft, d.h löscht.
Delphi-Quellcode:
 procedure bereinige_Datensatz_von_Kommentaren(var s:string);
    // löscht im Datensatz den folgenden Kommentar
    var
       position:integer;
       begin
    end;

Diese Prozedur macht tatsächlich genau das, was der Name vermuten lässt
Zitat:

Zitat von Slashmob (Beitrag 1144530)
4. Eine Prozedur, die führende Leerzeichen löscht.
Delphi-Quellcode:
 procedure loesche_fuehrende_Leerzeichen(var s:string);
       begin
            while s[1]= '' do             // Passt das so?
            delete (s,1,1);  
       end;


Slashmob 5. Jan 2012 21:54

AW: Funktionen und Prozeduren
 
Zitat:

Zitat von Sir Rufo (Beitrag 1144555)
Ich weiß ja nicht wer die Funktions-/Prozedur-Namen vergeben hat, aber die Funktionen passen nicht zur Benennung.

Diese Funktion verwirft oder überspringt keine Kommentarzeile, sondern prüft, ob es sich um eine Kommentarzeile handelt.
Der Name ist also verwirrend und sollte daher auf
Delphi-Quellcode:
function Ist_Kommentarzeile( const s : string ) : Boolean;
geändert werden - oder die Funktion macht nicht das, was sie eigentlich machen soll ;)
Zitat:

Zitat von Slashmob (Beitrag 1144530)
1. Eine Funktion, die eine Kommentarzeile verwirft, d.h. überspringt.
Delphi-Quellcode:
function Verwerfe_Kommentarzeile(s:string):boolean; // überspringt die Kommentarzeile
    var return_wert:boolean;
       position:integer;
       begin
            If (s[1]='/') and (s[2]='/') then    // Ist der Ansatz richtig??
               result=true;
            else
            result=false;
    end;

Was soll diese Prozedur denn nun? Groß- und Kleinschreibung ignorieren? erlauben?
Aktuell macht diese Prozedur nichts von alledem, sondern wandelt alle Zeichen in Großbuchstaben um.
Zitat:

Zitat von Slashmob (Beitrag 1144530)
2. Eine Prozedur, die Groß- und Kleinschreibung ignoriert.
Delphi-Quellcode:
procedure erlaube_gross_Kleinschreibung(var s:string);
       begin
            s:=uppercase(s); // Großschreibung
    end;

ok, die ist wohl noch nicht fertig :)
Zitat:

Zitat von Slashmob (Beitrag 1144530)
3. Eine Prozedur, die Kommentare an bestimmten Positionen verwirft, d.h löscht.
Delphi-Quellcode:
 procedure bereinige_Datensatz_von_Kommentaren(var s:string);
    // löscht im Datensatz den folgenden Kommentar
    var
       position:integer;
       begin
    end;

Diese Prozedur macht tatsächlich genau das, was der Name vermuten lässt
Zitat:

Zitat von Slashmob (Beitrag 1144530)
4. Eine Prozedur, die führende Leerzeichen löscht.
Delphi-Quellcode:
 procedure loesche_fuehrende_Leerzeichen(var s:string);
       begin
            while s[1]= '' do             // Passt das so?
            delete (s,1,1);  
       end;


also zu 1. den Inhalt der Prozedur hab ich geschrieben und scheint wohl falsch zu sein. Ja die Funktion soll die Kommentarzeile verwerfen, überspringen. Wie sieht sie dann richtig aus?
zu 2. Die Prozedur soll Groß-und Kleinschreibung ignorieren bzw. erlauben! Wie mach ich das??
zu 3. Auch hier weiß ich nicht wirklich was dort stehen muss.
zu 4. JUHU! :-D

Sir Rufo 5. Jan 2012 22:17

AW: Funktionen und Prozeduren
 
Nein kann ich nicht - und auch niemand sonst hier ...

denn es fehlen noch ein paar wichtige Informationen.
Das was du bislang hier an Informationen gegeben hast, scheint mir nur das linke Ohr vom Eisbären zu sein ;)

p80286 5. Jan 2012 22:24

AW: Funktionen und Prozeduren
 
Zitat:

Zitat von Slashmob (Beitrag 1144560)
also zu 1. den Inhalt der Prozedur hab ich geschrieben und scheint wohl falsch zu sein. Ja die Funktion soll die Kommentarzeile verwerfen, überspringen. Wie sieht sie dann richtig aus?
zu 2. Die Prozedur soll Groß-und Kleinschreibung ignorieren bzw. erlauben! Wie mach ich das??
zu 3. Auch hier weiß ich nicht wirklich was dort stehen muss.
zu 4. JUHU! :-D

Entschuldige aber da gibt es wohl ein Verständnisproblem.
Nehmen wir die 2 Groß/Kleinschreibung
Soll Groß/Kleinschreibung ignoriert werden dann tu nichts,
oder
soll Groß- und Kleinschreibung zu Groß- oder (excl.) Klein-Schreibung übersetzt werden?
Dann solltest du Großbuchstaben zu Kleinbuchstaben übersetzen. Bei Klein zu Groß fällt das ß unter den Tisch.

3)
Delphi-Quellcode:
position:=pos('//',satz);
und wie geht's mit dieser Zeile weiter? (Leerzeile, Blanks...)

Und in 4 frag Dich mal was passiert wenn Du eine Leerzeile übergibst (length()=0)

Gruß
K-H

Slashmob 5. Jan 2012 23:02

AW: Funktionen und Prozeduren
 
Ok, danke soweit!
Ich werde morgen dann die Aufgabe mit den Infos reinstellen und mehr Quelltext, damit auch ersichtlich ist, was gemeint ist.

himitsu 5. Jan 2012 23:05

AW: Funktionen und Prozeduren
 
Zitat:

Delphi-Quellcode:
procedure loesche_fuehrende_Leerzeichen(var s:string);
       begin
            while s[1]= '' do // Passt das so?
            delete (s,1,1);
       end;

Und jetzt übergib dieser Prozedur mal einen Leerstring, oder Einen nur aus Leerzeichen.
*peng*
Wo es kein erstes Zeichen gibt, da kann man nicht darauf zugreifen.


Aber was ich dir dringend empfehlen würde:
Eine "ordentlichere" Codeformatierung, vorallem bezüglich deiner grauenhaften Einrückung.

silver-moon-2000 6. Jan 2012 03:57

AW: Funktionen und Prozeduren
 
Zitat:

Zitat von Sir Rufo (Beitrag 1144555)
Diese Prozedur macht tatsächlich genau das, was der Name vermuten lässt
Zitat:

Zitat von Slashmob (Beitrag 1144530)
4. Eine Prozedur, die führende Leerzeichen löscht.
Delphi-Quellcode:
 procedure loesche_fuehrende_Leerzeichen(var s:string);
       begin
            while s[1]= '' do             // Passt das so?
            delete (s,1,1);  
       end;


Entschuldige, aber bist Du Dir da sicher? :?
Er schreibt doch
Delphi-Quellcode:
s[1] = ''
und nicht
Delphi-Quellcode:
s[1] = ' '
oder mache ich hier aufgrund der späten Stunde (und eines Glases Noilly Prat) einen Denkfehler?

Ansonsten aber, wie schon erwähnt, der Hinweis auf
Delphi-Quellcode:
Trim(Left)
, wenn auch Steuerzeichen entfernt werden sollen/dürfen

ConnorMcLeod 6. Jan 2012 05:25

AW: Funktionen und Prozeduren
 
Zitat:

Zitat von Slashmob (Beitrag 1144530)
1. Eine Funktion, die eine Kommentarzeile verwirft, d.h. überspringt.
Delphi-Quellcode:
function Verwerfe_Kommentarzeile(s:string):boolean; // überspringt die Kommentarzeile
    var return_wert:boolean;
       position:integer;
       begin
            If (s[1]='/') and (s[2]='/') then    // Ist der Ansatz richtig??
               result=true;
            else
            result=false;
    end;

Da ist Einiges im Argen...
*) wie schon gesagt wurde, passt der Name nicht zur Verwendung; wenn ich es richtig verstehe, dann sollte die Funktion *Soll_die_Zeile_verworfen_werden* heissen.
*) die Variablen sind unnotwendig
*) der übergebene String wird nicht auf seine Größe geprüft
*) die Logik kann man kürzer formulieren.
*) die Parameterübergabe mit string kann man optimieren
*) den Parameter kann man ebenso sprechend benamsen wie eine Variable ;-)

z.B.
Delphi-Quellcode:
function Soll_die_Zeile_verworfen_werden(const AZeile: string): Boolean;
begin
  Result := ((2 <= Length(AZeile)) and ('/' = AZeile[1]) and ('/' = AZeile[2]));
// oder
  Result := (1 = Pos('//', AZeile));
end;
HTH


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 Uhr.
Seite 1 von 3  1 23      

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