Jag skulle vilja ha en funktion som tar en sträng och en char som inargument och delar den i två strängar avbrutna vid char.
Exempel:
kod:
split(' min sträng',' ');
slut kod.
returnerar: split[0]:='min' och split[1]:='sträng'
Hur skriva funktionen för att få detta resultat.
Tack på förhand till någon.
JosefMedlem sedan mars 20023 561 inlägg urban_hahne: Använd gärna [kod]-taggarna när du postar kod.
PeWMedlem sedan juni 200010 432 inlägg Då topic i den tråden som detta postades i redan är avslutad iom att den trådskaparen fått svar, flyttade jag denna nya fråga till en egen tråd.
PeW - Moderator i Delphi
Du kan göra det med regular expression
På https://www.webeye.nu finns ett exempel på hur man delar upp ord.
Sedan är det bara att placera det i en array
<%
strText = "Ett vanligt problem när man skall koppla sin sida till en databas är"&_
" att man har för lite rättigheter till den mapp där databasen ligger, eller att databasen"&_
" i sig är 'read only'. Ett annat problem brukar vara att man har angivit en felaktig sökväg."&_
" Uppfyller man något av ovanstående kriterier kan man få detta felmeddelande: "&_
"[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key"&_
" 'Temporary (volatile) Jet DSN for process 0x7d4 Thread 0x888 DBC 0xbf822d4 Jet'."
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\w"
Set Matches = objRegExp.Execute(strText)
Response.write "Texten innehåller " & Matches.count&" stycken ord"
%>
Den här koden räknar ord. Kan inte vara så svårt att göra om det till det du behöver
koden som delar strängar kan jag. Det jag inte vet är syntaxen för hur skriva funktionen så att den ger 2 resultat tillbaka till anropet.
jag testade så här
start kod:
function split(minStr:string;minchar:char): array of string;
begin
kod som splittar strängen här
...
...
end;
slut kod:
men det blir fel. I alla exempel jag hittar skickas bara ett resultat tillbaka från funktionen. Jag vill ha 2 resultat (reultat[0] och resultat[1]
fiddlerMedlem sedan juli 20023 617 inlägg Du kan väl skapa ett objekt innehållandes dina två strängar.
skapa objekt av 2 strängar? hur göra. Eller rättare sagt hur ska funktionen deklareras för att det ska funka.
Så här kan du lösa det med hjälp av en StringList (arrayer är så knepiga att jobba med...):
function split(minStr:string;minchar:char): TStringList;
var
inx: integer;
begin
Result := TStringList.Create;
inx := Pos(minchar, minStr);
if inx = 0 then
raise Exception.Create(
'Tecknet "' + minchar + '" finns inte i strängen "' + minStr + '"!');
Result.Add(Copy(minStr, 1, inx-1));
Result.Add(Copy(minStr, inx+1, Length(minStr)))
end;
Du anropar funktionen så här:
var
sl: TStringList;
InStr: string;
UtStr1: string;
UtStr2: string;
.
.
begin
.
.
sl := split(InStr, ' ');
UtStr1 := sl[0];
UtStr2 := sl[1];
.
.
end;
fiddlerMedlem sedan juli 20023 617 inlägg Hm, ibland har man för bråttom att skriva... :r
Det var såhär jag menade:
type
TMyString = record
StrFirst, StrSecond: String
end;
och
function split(minStr:string;minchar:char): TMyString;
Fast nu hade du ju redan fått ett bra svar...:OO
MinOrkMedlem sedan aug. 2000234 inlägg Det finns också en funktion som heter ExtractStrings som du kan titta på.