15. marts 2002 - 19:46
Der er
2 kommentarer og
1 løsning
tekst til sammenhæng
vis jeg laver en *.txt fil som ser sådan ud:
------start tavle.txt------
<Point=10><Name=Drofzz><Weapon=Mp5><Method=body>
<Point=15><Name=Getto><Weapon=Colt><Method=leftarm>
<Point=100><Name=Getto><Weapon=Mp5><Method=headshot>
<Point=10><Name=Getto><Weapon=Colt><Method=body>
------slut tavle.txt------
kan man så lave en windows-understøtende program,
som regner det sammen, så der står:
Navn: Drofzz
Points: 10
Fav. våben: Mp5
Navn: Getto
points:125
Fav. våben: Colt
15. marts 2002 - 22:58
#1
Her er løsningen i CBuilder.
Jeg har implementeret en metode der læser Een linie ad gangen, hvor jeg så parser felterne en efter en.
Derefter skriver jeg resultatet ud i en memo.
void __fastcall TForm1::ReadLine(AnsiString aLine, AnsiString *aName, AnsiString *aPoints, AnsiString *aWeapons)
{
int StartIndex;
int EndIndex;
StartIndex = aLine.Pos("=");
EndIndex = aLine.Pos(">");
if (StartIndex && EndIndex)
{
StartIndex += 1; // Skip ´=´
*aPoints = aLine.SubString(StartIndex,EndIndex-StartIndex);
}else
{
// Error could not read Points from file
return;
}
aLine = aLine.SubString(EndIndex+1,aLine.Length()-EndIndex);
StartIndex = aLine.Pos("=");
EndIndex = aLine.Pos(">");
if (StartIndex && EndIndex)
{
StartIndex += 1; // Skip ´=´
*aName = aLine.SubString(StartIndex,EndIndex-StartIndex);
}else
{
// Error could not read Name from file
return;
}
aLine = aLine.SubString(EndIndex+1,aLine.Length()-EndIndex);
StartIndex = aLine.Pos("=");
EndIndex = aLine.Pos(">");
if (StartIndex && EndIndex)
{
StartIndex += 1; // Skip ´=´
*aWeapons = aLine.SubString(StartIndex,EndIndex-StartIndex);
}else
{
// Error could not read Weapons from file
return;
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Name,Weapon,Points;
TStringList* L;
L = new TStringList();
L->LoadFromFile("\\Source\\Test.txt");
for (int i=0; i<L->Count; i++)
{
ReadLine(L->Strings[i],&Name,&Points,&Weapon);
Memo1->Lines->Add("Name:"+Name);
Memo1->Lines->Add("Points:"+Points);
Memo1->Lines->Add("Fav. Våben:"+Weapon);
Memo1->Lines->Add("------------");
}
}
16. marts 2002 - 00:07
#3
Ja CBuilder er C++. Du kan tage ovenstående som en fremgangsmåde.
1. Indlæs filen i et array af strings/chars.
2. For hver linie parse indholdet (gøres med ReadLine).
3. Udskriv resultatet fra ReadLine i et vindue.
Hvilket udviklingsværktøj bruger du ?