Avatar billede mora Nybegynder
26. august 2001 - 20:46 Der er 15 kommentarer og
2 løsninger

case of strings

Hvordan kan jeg lave en case, hvor jeg har enm string, det er jo ikke en ordinary type ?

Jeg har prøvet Char, men den kan kun havde et tegn ?
Avatar billede mukke Nybegynder
26. august 2001 - 21:09 #1
Det kan du ikke, brug:

if ... then
begin
end
else if ... then

....
Avatar billede morten_s Nybegynder
26. august 2001 - 21:11 #2
Det kan du ikke...men er det da de samme strenge du har hver gang ?

Så kan du overveje at lave et SET

set of (Club, Diamond, Heart, Spade)

Se delphi hjælp under Set
Avatar billede mora Nybegynder
26. august 2001 - 21:22 #3
Det er \"de\" samme strenge hver gang, eller den skal teste for nogle værdier, og hvis ingen af dem passert skal den ...

Bruger ikke if then else, da der er omkring 100 / 300 strings den skal teste for.

Set of kan måske bruges, selvom det skal være en noget lang \"set of\" linje ...
Avatar billede mora Nybegynder
26. august 2001 - 21:33 #4
Men hvordan skal jeg så konvertere min string til den set of ?
Avatar billede mukke Nybegynder
26. august 2001 - 21:34 #5
Hvilke typer strenge er der tale om / hvordan bruges de?

Overvej evt. om det er muligt at bruge talkoder i stedet...

men ellers er der nok ikke nogen vej uden om :(
Avatar billede morten_s Nybegynder
26. august 2001 - 21:43 #6
Hvorfor fylder du dem ikke ind i en listbox,
så har du styr på hvilen der er valgt med ItemsIndex ?
Avatar billede mora Nybegynder
26. august 2001 - 21:50 #7
Det er en kommando fra en IRC server, som skal behandles ...
Avatar billede morten_s Nybegynder
26. august 2001 - 22:02 #8
Alstå en driver du skal lave ?

Tja hvad er der galt i at lave 300 if sætninger +

if IRC.Ind = \'DitDat\' then do this ?

ellers kan du stoppe dem alle i en listbox, og så søge på den streng du får ind mellem dem i din listbox, og så snuppe indexet, indexet kan du så bruge i din case...

Jeg tror jeg ville vælge if then konstruktionen
Avatar billede martinlind Nybegynder
26. august 2001 - 22:54 #9
Hvis jeg var dig ville jeg helt klart vælge SET måden det er den smarteste og \"pæneste\", og du vil kunne trække værdierne ud som strenge hvis du har brug for det.
Avatar billede mora Nybegynder
27. august 2001 - 13:13 #10
Tror jeg vælger at lægge funktionerne i hver sin function / procedure og så klare det med en if

if irc.ind=\'nick\' then nick();
if irc.ind=\'nick2\' then nick2();



etc.
Det vil vist give mest overskuelighed, ikke ?
Avatar billede mukke Nybegynder
27. august 2001 - 15:27 #11
Når du er IRC-komandoer der er tale om er set ikke en brugbar metode. brug ganske enkelt if then og placer de enkelte dele i procedurer for sig. Det vil klart være den mest naturlige og mest overskuelige måde at gøre det på.
Avatar billede seiofecco Nybegynder
28. august 2001 - 07:48 #12
Hvis du har 300 strenge eller flere, så bliver en if then else lidt langsom.

Jeg foreslår at du bruger en HASH tabel. Desværre følger der ikke et hash object med i delphi (jeg har D5) så du må skrive det selv.

Ved du hvad en hash tabel er? Jeg har selv oversat hash klasen fra JBuilder til delphi hvis du er intresseret.
Avatar billede zardic Nybegynder
29. august 2001 - 13:12 #13
Skriv action name = med comando

Var I:integer;
begin
I:= 0;
While I < ActionList1.ActionCount do
if ActionList1.Actions[I].Name = \'action1\' Then
  ActionList1.Actions[I].Execute;
end;

procedure TForm1.Action1Execute(Sender: TObject);
begin
//Hvad den nu skal
end;

//Zardic
Avatar billede mora Nybegynder
29. august 2001 - 16:48 #14
seiofecco: Nej, aner ikke hvad HASH er, udover et stof der ryges og en kommando i FTP :)

Du kan evt. maile noget til mig ?  mora@ready.dk

Zardic: Kan evt. bruge dit foreslag :)
Avatar billede seiofecco Nybegynder
29. august 2001 - 22:29 #15
En HASH tabel er en slags array der er indexeret med strenge. Det virker sådan at man har er klasse der håndterer hele array\'et og en klasse til hvert element. Klassen til elementer har så en metode hvormed den kan beregne en talvætdi (kaldet HASH værdien) baseret på den streng du ønsker at bruge som index. Denne talværdi bruges som index i arrayet. På hver plads i arrayet starter der så en hægtet liste. Klassen med elementer indeholder også en pointer til det du ønsker at indexere med strengen. Når du vil tilføje et nyt element, angiver du blot søgestrengen og pointeren til dit eget object og så bliver det tilføjet. Når du vil søge i listen, så beregnes HASHværdien at dit søgeord, og så har man indexet i listen. Herefter løbes den hægtede liste igennem, indtil det søgeord=indexstrengen. Listen er indrettet således at det næsten altid bliver inden 3 forsøg, svarende til en 5-6 if sætninger.
Jeg har ikke koden har, men jeg sender den i morgen.
Avatar billede seiofecco Nybegynder
30. august 2001 - 07:48 #16
Jeg har sendt HASH koden pr mail.
Avatar billede mora Nybegynder
09. september 2001 - 01:57 #17
bruger if then else alligevel, evt. HASH
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester