Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Det virker ikke hvis jeg bruger: 'den,rare,nisse' bliver outputtet: "den rare nis" her mangler altså bogstaver! Pointene er dine hvis du kan modificere koden så den passer :-)
put en listbox på din form (skjule den evt. hvis du ikke vil se den).
Sæt Listbox1.commatext := 'den,rara,nisse'; eller listbox1.commatext := streng; hvis streng indeholder teksten "den, rara, nisse"
Herefter vil listbox1.items.count indeholde antallet af ord adskilt af kommaer og et simpelt loop kan give dig hver enkelt ord, som (hvis du ser listboksen) er listet på hver sin linie:
den rare nisse
for i := 0 to listbox1.items.count -1 do begin showmessage(listbox1.items[i]); end;
Hvis du ydermere sætter listboksens "sorted" property til true bliver de enkelte linier sorteret i forhold til hinanden:
function GetStrElement(var szStr : String) : String; var iPos : Integer; begin iPos := Pos(',', szStr); if iPos <> 0 then begin Result:=System.Copy(szStr, 1, iPos-1); System.Delete(szStr, 1 , iPos); end else begin Result := szStr; szStr := ''; end; end;
Denne funktion fjerner kun 1 ord af gangen fra din streng (og skulle ikke "spise" nogen ekstra tegn). Hvis du bag efter vil sortere de enkelte strenge så vil en sorteres liste (TStrings) være oplagt.
Nedenstående stump kode er en generel løsning på spørgsmålet:
Stik den en streng du vil have delt op (AStr), et skilletegn eller streng (Delimiter) og den liste af strenge du vil have resultatet i. Husk selv at create så vel som free'e den liste du bruger som parameter... Med mindre du stikker den .Items fra en listbox eller lign.
procedure Unscrunch(const AStr: string; Delimiter: string; AList: TStrings); var APos : Integer; WStr : string; begin WStr := AStr; with AList do begin if Count > 0 then Clear; APos := Pos(Delimiter, WStr); while APos > 0 do begin Add(Copy(WStr, 1, APos-1)); System.Delete(WStr, 1, APos-1 + Length(Delimiter)); APos := Pos(Delimiter, WStr); end; Add(WStr); end; end;
Godt du vækkede mig PSV men jeg har ligget med 39,3 i feber :-( Angående de forskellige koder så kan jeg sgu ikke lige overskue dem. Jeres forslag med tstrings og listbox's forstår jeg ikke helt da jeg gerne skulle have outputtet i tre forskellige strings og ikke i en tabel. Den første kode som pellelil kom med var helt perfekt med mangler bare tre outputs istedet for to! Kan i ikke omskrive den til tre outputs?
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.