Hej, jag har ett litet problem. Jag har en sträng som inehåller först en massa mellanrum och sedan en blandning av bokstäver, siffror, mellanrum samt andra tecken. Tack för svaret! Den körs 18 gånger på olika strängar som är ganska stora. Här är ett exempel: Spontant skulle jag säga att om GetLine() är en funktion som söker upp en rad och retunerar den. är det funktionen som slukar tid. Testa Split() funktionen och en array. Koden bör se likadant. Byt bara ut Getline mot sträng arrayens namn. Behöver bara lägga till två rader: Varför inte ladda hem sidan med INet och med "MS HTML Object Library" ta ut informationen? Skriv Mid$, Right$ och LTrim$ i stället för Mid, Right och LTrim. Det snabbar upp koden med uppskattningsvis 25%. Andreas:Snabba upp kod
Här är ett exempel på en sådan sträng:
" AAA1 BBB2 CCC3"
Jag vill nu ta ut endast "AAA1 BBB2 CCC3" ur den strängen. Jag har löst det problemet på detta vis:
---
For i = 2 To Len(temp)
tecken = Mid(temp, i, 1)
If tecken = " " Then
Else
A = Mid(temp, i)
Exit For
End If
Next i
---
Det går väldigt långsamt att göra på detta sätt eftersom jag vill göra så med ca 50st strängar. Jag undrar alltså om man kan snabba upp koden, eller om det finns något annat, snabbare sätt.
Tack.
/RiPPeRSv: Snabba upp kod
Koden blev mindre men det går ungefär lika långsamt.
Nu använder jag denna koden:
---
temp = Mid(temp, 2)
A = LTrim(temp)
---
Jag använder Mid därför att i vissa fall kan det vara en bokstav först av allt och den vill jag inte heller ha med. Sv: Snabba upp kod
Det programmet gör, är att det formaterar en tabell från en viss websida (http://games.swirve.com/utopia) som man har kopierat till clipboarden. Jag vet att andra program, gjorda i VB, gör detta snabt (exakt samma information). Sv: Snabba upp kod
---
The Province of Lost Soul (15:22) as of March 17th, YR1.*
Race
Orc
Ruler
Sir RiPPeR*
Land
Peasants
Employment
Utilization
Money
Food
Runes
Trade Balance
536 Acres*
6758*
100%*
100%*
21,717gc*
70,804 bushels*
2966 runes *
-56,500gc*
Soldiers
Warriors
Hammerthrowers
Ogres
Thieves
Wizards
War Horses
218*
1*
1116*
2182*
625 (45%)*
31 (85%) *
963*
---
De rader som har en '*' efter skall mellanrummen tas bort på och resten ska läggas i variablar.
Här är koden jag använder:
---
TEXTBOX.Text = ClipBrd
'Här börjar själva formateringen!
'-------------------------------
Dim i As Integer
Dim b As Integer
b = 20
ClipBrd = GetLine(1)
var.Name = Right(ClipBrd, Len(ClipBrd) - 16)
ClipBrd = GetLine(5)
ClipBrd = Mid(ClipBrd, b)
var.Ruler = LTrim(ClipBrd)
ClipBrd = GetLine(3)
ClipBrd = Mid(ClipBrd, b)
var.Race = LTrim(ClipBrd)
ClipBrd = GetLine(14)
ClipBrd = Mid(ClipBrd, b)
var.Land = LTrim(ClipBrd)
ClipBrd = GetLine(15)
ClipBrd = Mid(ClipBrd, b)
var.Peasants = LTrim(ClipBrd)
ClipBrd = GetLine(16)
ClipBrd = Mid(ClipBrd, b)
var.Employment = LTrim(ClipBrd)
ClipBrd = GetLine(17)
ClipBrd = Mid(ClipBrd, b)
var.Utilization = LTrim(ClipBrd)
ClipBrd = GetLine(18)
ClipBrd = Mid(ClipBrd, b)
var.Money = LTrim(ClipBrd)
ClipBrd = GetLine(19)
ClipBrd = Mid(ClipBrd, b)
var.Food = LTrim(ClipBrd)
ClipBrd = GetLine(20)
ClipBrd = Mid(ClipBrd, b)
var.Runes = LTrim(ClipBrd)
ClipBrd = GetLine(21)
ClipBrd = Mid(ClipBrd, b)
var.TradeBalance = LTrim(ClipBrd)
ClipBrd = GetLine(29)
ClipBrd = Mid(ClipBrd, b)
var.soldiers = LTrim(ClipBrd)
ClipBrd = GetLine(30)
ClipBrd = Mid(ClipBrd, b)
var.OffSpec = LTrim(ClipBrd)
ClipBrd = GetLine(31)
ClipBrd = Mid(ClipBrd, b)
var.DefSpec = LTrim(ClipBrd)
ClipBrd = GetLine(32)
ClipBrd = Mid(ClipBrd, b)
var.Elites = LTrim(ClipBrd)
ClipBrd = GetLine(33)
ClipBrd = Mid(ClipBrd, b)
var.Thiefes = LTrim(ClipBrd)
ClipBrd = GetLine(34)
ClipBrd = Mid(ClipBrd, b)
var.Wizards = LTrim(ClipBrd)
ClipBrd = GetLine(35)
ClipBrd = Mid(ClipBrd, b)
var.Horses = LTrim(ClipBrd)
---
GetLine returnerar allt på en viss rad.
/RiPPeRSv: Snabba upp kod
TEXTBOX.Text = ClipBrd
'Här börjar själva formateringen!
'-------------------------------
Dim i As Integer
Dim b As Integer
Dim sLines() as String
b = 20
sLines = Split(ClipBrd, vbcrlf)
ClipBrd = sLines(1)
var.Name = Right(ClipBrd, Len(ClipBrd) - 16)
ClipBrd = sLines(5)
ClipBrd = Mid(ClipBrd, b)
var.Ruler = LTrim(ClipBrd)
ClipBrd = sLines(3)
ClipBrd = Mid(ClipBrd, b)
var.Race = LTrim(ClipBrd)
ClipBrd = sLines(14)
ClipBrd = Mid(ClipBrd, b)
var.Land = LTrim(ClipBrd)
ClipBrd = sLines(15)
ClipBrd = Mid(ClipBrd, b)
var.Peasants = LTrim(ClipBrd)
ClipBrd = sLines(16)
ClipBrd = Mid(ClipBrd, b)
var.Employment = LTrim(ClipBrd)
ClipBrd = sLines(17)
ClipBrd = Mid(ClipBrd, b)
var.Utilization = LTrim(ClipBrd)
ClipBrd = sLines(18)
ClipBrd = Mid(ClipBrd, b)
var.Money = LTrim(ClipBrd)
ClipBrd = sLines(19)
ClipBrd = Mid(ClipBrd, b)
var.Food = LTrim(ClipBrd)
ClipBrd = sLines(20)
ClipBrd = Mid(ClipBrd, b)
var.Runes = LTrim(ClipBrd)
ClipBrd = sLines(21)
ClipBrd = Mid(ClipBrd, b)
var.TradeBalance = LTrim(ClipBrd)
ClipBrd = sLines(29)
ClipBrd = Mid(ClipBrd, b)
var.soldiers = LTrim(ClipBrd)
ClipBrd = sLines(30)
ClipBrd = Mid(ClipBrd, b)
var.OffSpec = LTrim(ClipBrd)
ClipBrd = sLines(31)
ClipBrd = Mid(ClipBrd, b)
var.DefSpec = LTrim(ClipBrd)
ClipBrd = sLines(32)
ClipBrd = Mid(ClipBrd, b)
var.Elites = LTrim(ClipBrd)
ClipBrd = sLines(33)
ClipBrd = Mid(ClipBrd, b)
var.Thiefes = LTrim(ClipBrd)
ClipBrd = sLines(34)
ClipBrd = Mid(ClipBrd, b)
var.Wizards = LTrim(ClipBrd)
ClipBrd = sLines(35)
ClipBrd = Mid(ClipBrd, b)
var.Horses = LTrim(ClipBrd)
/Mvh, AndreasSv: Snabba upp kod
Sv: Snabba upp kod
Sv: Snabba upp kod
Tack för all hjälpen. Nu funkar det perfekt! Jag blev tvungen att ändra så att den inte dimmade arrayen först, för då blev det fel och så blev jag tvungen att ändra så att rad 1=sLines(0), 2=sLines(1)... osv... men sedan funkade det fint.
Roger:
Nu har jag egentligen inget problem med tiden, men jag skall göra så. Tack!