AGB  ·  Datenschutz  ·  Impressum  







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

Reagieren auf Optionale Parameter

Ein Thema von Pseudemys Nelsoni · begonnen am 9. Dez 2003 · letzter Beitrag vom 9. Dez 2003
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Reagieren auf Optionale Parameter

  Alt 9. Dez 2003, 11:55
Moin,

in meinem IRC-Chan habe ich einen TV-Bot, es gibt in dem bot 2 parameter (-l (limit) und -u (uhrzeit)). Das sieht dann bei eingabe ca so aus "!tv pro7 -u18 -l3"...
wenn das jemand schreibt werden die nächsten 3 sendungen ab 18 uhr auf pro7 angezeigt, ich habe die abfrage nach den parametern ziemlich umständlich gemacht und ich frage mich wie es aussieht wenn mal 10 paremeter oder mehr benötigt werden, da sind die kombinationionen wo und ob die parameter überhaupt da sind ja geradezu unendlich. Also ich habe es ca so gemacht (bei den 2 die ich habe. habe den code gerade nicht da, deswegen tu ichs mal nicht in delphi tags):

"wort" ist eine funktion die mirdas wort (der index) aus einem string gibt

also wort 1 ist ja "!tv", wort 2 ist "pro7"

if wort(3, s) = '-u' then // sucht das tv programm ab der uhrzeit die nach -u angegeben wurde
if wort(3, s) = '-l' then // gibt 3 sendungen aus
if (wort(3, s) = '-l') AND (wort(4, s) = '-u') then // sucht nach uhrzeit und gibt 3 sendungen aus
if (wort(3, s) = '-u') AND (wort(4, s) = '-l') then // sucht nach uhrzeit und gibt 3 sendungen aus


hier musste ich die letzte zeile doppelt angeben, da ich ja nicht weiss ob 3 -l oder -u ist, man soll sie ja angeben können wo man möchte. wenn ich z.b jetzt 10 parameter habe, dann habe ich ja unendliche "if"-prüfungen.
es ist schwer zu erklären was ich meine, aber wer z.b mirc kennt weiss was ich meine. Hoffe jemand kann mir helfen

mfg
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Reagieren auf Optionale Parameter

  Alt 9. Dez 2003, 12:18
Warum machst Du es nicht so, wie bei optionalen Parametern zB bei INI-Dateien?

Ich stelle mit eine Klasse vor, die eine Menge von Parametern und deren Werte verknüpfen kann (ähnlich wie TIniFile), natürlich kannst Du das ganze auch mit einem großen String und div funktionen machen (hier eignen sich Hier im Forum suchenReguläre Ausdrücke).

Dann könnte die Klasse zB eine Methode zum Ermitteln, ob es einen Schlüssel (Parameternamen) gibt, implementieren
TMyClass.HasKey(const AName: string): Boolean eine Methode, die tatsächlich den Wert des Schlüssels (Parameter) liest, nur intern verwendet wird und bei nicht-Existenz dieses Schlüssel eine Exception wirft
TMyClass.DoReadKey(const AName: string): string Die tatsächliche Lösung für Dein Problem könnte dann so aussehen
Delphi-Quellcode:
TMyClass.ReadStringKey(const AName: string;
  const ADafault: string=''): string;
begin
  if HasKey(AKey) then
    Result:= DoReadKey(AName)
  else
    Result:= ADefault;
end;
bzw für Zahlenwerte
Delphi-Quellcode:
TMyClass.ReadIntKey(const AName: string;
  const ADefault: Integer = 0): Integer;
begin
  Result:= StrToInt(ReadStringKey(AKey, IntToStr(ADefault));
end;
und im Programm schreibst Du dann einfach
Delphi-Quellcode:
myUhrzeit:= myParams.ReadHourKey('u', DefaultHour);
myEntryCount:= myParams.ReadIntKey('l', DefaultEntryCount);
Die Beispiele sind nicht getestet!
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Reagieren auf Optionale Parameter

  Alt 9. Dez 2003, 12:27
danke, mal guggn
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:19 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