Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: VCL (C++ Builder) ::  Schön oder Mist ?     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Tim06TR
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.03.2009
Beiträge: 1308
Beitrag Tim06TR Mitglied 17:33:08 02.09.2010   Titel:   Schön oder Mist ?            Zitieren

Ich habe dies in einer Schleife benutzt, um von [...] bis zum Ende zu lesen,
ist das schön oder eher weniger ?
C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"
C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"
C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"


EDIT: Ganz nebenbei löst das ein Compiler Bug in 2009 aus, der mit //" zu lösen ist.
er setzt ∞ oft } nach der Schleife

_________________
"Wie ein Komponist an seinem Klavier gleitet der Programmierer über die Tasten auf der Suche nach der perfekten Komposition" ~me --- Wehe ihr lest meine alten posts ! :D


Zuletzt bearbeitet von Tim06TR am 17:34:07 02.09.2010, insgesamt 1-mal bearbeitet
VergissEs
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.06.2001
Beiträge: 1010
Beitrag VergissEs Mitglied 18:39:11 02.09.2010   Titel:   Re: Schön oder Mist ?            Zitieren

C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"
C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"
C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"

Wenn das deine Abbruchbedingung ist, dann ist das unschön.
wiso nicht:
C/C++ Code:
int iRow=0; // dein begin [...]

for (iRow; iRow< Setup->Count; ++iRow) {

    Setup->Strings[iRow] //du was du willst mit den Zeilen
}
C/C++ Code:
int iRow=0; // dein begin [...]

for (iRow; iRow< Setup->Count; ++iRow) {

Setup->Strings[iRow] //du was du willst mit den Zeilen
}
C/C++ Code:
int iRow=0; // dein begin [...]

for (iRow; iRow< Setup->Count; ++iRow) {

    Setup->Strings[iRow] //du was du willst mit den Zeilen
}

_________________
MfG
VergissEs
Tim06TR
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.03.2009
Beiträge: 1308
Beitrag Tim06TR Mitglied 14:43:24 03.09.2010   Titel:              Zitieren

VergissEs schrieb:
Wenn das deine Abbruchbedingung ist, dann ist das unschön.


Ists nicht :)

Sind mehrere Abragen im Code und je nachdem was zutrifft, wird der entsprechende Abschnitt einem String hinzugefügt, bis ein Zeichen kommt, aber am Ende kommt... das Ende. (Nullterminierung)

_________________
"Wie ein Komponist an seinem Klavier gleitet der Programmierer über die Tasten auf der Suche nach der perfekten Komposition" ~me --- Wehe ihr lest meine alten posts ! :D
Braunstein
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.05.2002
Beiträge: 6689
Beitrag Braunstein Mitglied 16:41:14 03.09.2010   Titel:              Zitieren

Zumindest könnte man das hier
C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"
C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"
C/C++ Code:
Setup->Strings[i].SubString(Echar,1) != "\0"

durch das hier ersetzen
C/C++ Code:
Setup->Strings[i][Echar] != '\0'
C/C++ Code:
Setup->Strings[i][Echar] != '\0'
C/C++ Code:
Setup->Strings[i][Echar] != '\0'

So eine Abfrage kommt mir aber auch komisch vor. Da kann man bestimmt den Algorithmus verbessern. :)
Tim06TR
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.03.2009
Beiträge: 1308
Beitrag Tim06TR Mitglied 18:33:34 03.09.2010   Titel:              Zitieren

Wenn du meinst :D

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
TStringList* Setup = new TStringList;
while (i < Setup->Count)
{
    i++;
    int Echar = 0;
    //Setup->Strings[i-1]
    if (Setup->Strings[i-1][Echar] == 'X')
    {
        Echar+=2;
        String X;
        while (Setup->Strings[i-1].SubString(Echar,1) != "Y")
        {
            Echar++;
            X += Setup->Strings[i-1].SubString(Echar,1);
        }
        X = X.SubString(0,X.Length()-1);
        ShowMessage(X);
    }
    if (Setup->Strings[i-1][Echar] == 'Y')
    {
        Echar+=2;
        String Y;
        while (Setup->Strings[i-1].SubString(Echar,1) != "\0")
               {
            Echar++;
            Y += Setup->Strings[i-1].SubString(Echar,1);
        }
        ShowMessage(Y);
    }
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
TStringList* Setup = new TStringList;
while (i < Setup->Count)
{
i++;
int Echar = 0;
//Setup->Strings[i-1]
if (Setup->Strings[i-1][Echar] == 'X')
{
Echar+=2;
String X;
while (Setup->Strings[i-1].SubString(Echar,1) != "Y")
{
Echar++;
X += Setup->Strings[i-1].SubString(Echar,1);
}
X = X.SubString(0,X.Length()-1);
ShowMessage(X);
}
if (Setup->Strings[i-1][Echar] == 'Y')
{
Echar+=2;
String Y;
while (Setup->Strings[i-1].SubString(Echar,1) != "\0")
{
Echar++;
Y += Setup->Strings[i-1].SubString(Echar,1);
}
ShowMessage(Y);
}
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
TStringList* Setup = new TStringList;
while (i < Setup->Count)
{
    i++;
    int Echar = 0;
    //Setup->Strings[i-1]
    if (Setup->Strings[i-1][Echar] == 'X')
    {
        Echar+=2;
        String X;
        while (Setup->Strings[i-1].SubString(Echar,1) != "Y")
        {
            Echar++;
            X += Setup->Strings[i-1].SubString(Echar,1);
        }
        X = X.SubString(0,X.Length()-1);
        ShowMessage(X);
    }
    if (Setup->Strings[i-1][Echar] == 'Y')
    {
        Echar+=2;
        String Y;
        while (Setup->Strings[i-1].SubString(Echar,1) != "\0")
               {
            Echar++;
            Y += Setup->Strings[i-1].SubString(Echar,1);
        }
        ShowMessage(Y);
    }
}


(X: Y: geben mausklickpositionen an, die später simuliert werden, hier werden sie gelesen)
Datei:
Zitat:
ChampionName oder was anderes
ClientPosition_X: 0 ClientPosition_Y: 0
stan****
X: 805 Y: 618
X: 805 Y: 618
X: 805 Y: 618
X: 805 Y: 618
X: 1162 Y: 481
X: 1156 Y: 393
X: 1220 Y: 349
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339
X: 1216 Y: 339


EDIT : REFORMAT

_________________
"Wie ein Komponist an seinem Klavier gleitet der Programmierer über die Tasten auf der Suche nach der perfekten Komposition" ~me --- Wehe ihr lest meine alten posts ! :D


Zuletzt bearbeitet von Tim06TR am 18:36:21 03.09.2010, insgesamt 2-mal bearbeitet
VergissEs
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.06.2001
Beiträge: 1010
Beitrag VergissEs Mitglied 21:43:44 03.09.2010   Titel:              Zitieren

Ich werf mal den Code ins rennen.
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <vector>
#include
<memory>

    std::vector<TPoint> Points;
    std::auto_ptr<TStringList> Setup(new TStringList());
    Setup->LoadFromFile(DieDatei);

    int XPos, YPos;
    TPoint MyPoint;

    for (int i=0; i < Setup->Count; i++) {

        XPos = Setup->Strings[i].Pos("X:");
        YPos = Setup->Strings[i].Pos("Y:");

        if (XPos > 0 && YPos > 0) {

            MyPoint.x = Trim(Setup->Strings[i].SubString(XPos+2, YPos-XPos-2)).ToIntDef(-1);
            MyPoint.y = Trim(Setup->Strings[i].SubString(YPos+2, Setup->Strings[i].Length()-YPos-1)).ToIntDef(-1);

            if (MyPoint.x != -1 && MyPoint.y != -1) Points.push_back( MyPoint );
        }
    }
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <vector>
#include
<memory>

std::vector<TPoint> Points;
std::auto_ptr<TStringList> Setup(new TStringList());
Setup->LoadFromFile(DieDatei);

int XPos, YPos;
TPoint MyPoint;

for (int i=0; i < Setup->Count; i++) {

XPos = Setup->Strings[i].Pos("X:");
YPos = Setup->Strings[i].Pos("Y:");

if (XPos > 0 && YPos > 0) {

MyPoint.x = Trim(Setup->Strings[i].SubString(XPos+2, YPos-XPos-2)).ToIntDef(-1);
MyPoint.y = Trim(Setup->Strings[i].SubString(YPos+2, Setup->Strings[i].Length()-YPos-1)).ToIntDef(-1);

if (MyPoint.x != -1 && MyPoint.y != -1) Points.push_back( MyPoint );
}
}
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <vector>
#include
<memory>

    std::vector<TPoint> Points;
    std::auto_ptr<TStringList> Setup(new TStringList());
    Setup->LoadFromFile(DieDatei);

    int XPos, YPos;
    TPoint MyPoint;

    for (int i=0; i < Setup->Count; i++) {

        XPos = Setup->Strings[i].Pos("X:");
        YPos = Setup->Strings[i].Pos("Y:");

        if (XPos > 0 && YPos > 0) {

            MyPoint.x = Trim(Setup->Strings[i].SubString(XPos+2, YPos-XPos-2)).ToIntDef(-1);
            MyPoint.y = Trim(Setup->Strings[i].SubString(YPos+2, Setup->Strings[i].Length()-YPos-1)).ToIntDef(-1);

            if (MyPoint.x != -1 && MyPoint.y != -1) Points.push_back( MyPoint );
        }
    }
}

_________________
MfG
VergissEs
berlinbär
Unregistrierter




Beitrag berlinbär Unregistrierter 21:54:02 03.09.2010   Titel:              Zitieren

C/C++ Code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
int posx,posy;
int x,y;
for(int i=0;i<Setup->Count;i++)
{
    posx=Setup->Strings[i].Pos("X: ");
    posy=Setup->Strings[i].Pos("Y: ");
    ShowMessage(Setup->Strings[i].SubString(posx+3,posy-posx-4));
    ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
int posx,posy;
int x,y;
for(int i=0;i<Setup->Count;i++)
{
posx=Setup->Strings[i].Pos("X: ");
posy=Setup->Strings[i].Pos("Y: ");
ShowMessage(Setup->Strings[i].SubString(posx+3,posy-posx-4));
ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
int posx,posy;
int x,y;
for(int i=0;i<Setup->Count;i++)
{
    posx=Setup->Strings[i].Pos("X: ");
    posy=Setup->Strings[i].Pos("Y: ");
    ShowMessage(Setup->Strings[i].SubString(posx+3,posy-posx-4));
    ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));
}
VergissEs
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.06.2001
Beiträge: 1010
Beitrag VergissEs Mitglied 22:07:38 03.09.2010   Titel:              Zitieren

berlinbär schrieb:
C/C++ Code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
int posx,posy;
int x,y;
for(int i=0;i<Setup->Count;i++)
{
    posx=Setup->Strings[i].Pos("X: ");
    posy=Setup->Strings[i].Pos("Y: ");
    ShowMessage(Setup->Strings[i].SubString(posx+3,posy-posx-4));
    ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
int posx,posy;
int x,y;
for(int i=0;i<Setup->Count;i++)
{
posx=Setup->Strings[i].Pos("X: ");
posy=Setup->Strings[i].Pos("Y: ");
ShowMessage(Setup->Strings[i].SubString(posx+3,posy-posx-4));
ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
int posx,posy;
int x,y;
for(int i=0;i<Setup->Count;i++)
{
    posx=Setup->Strings[i].Pos("X: ");
    posy=Setup->Strings[i].Pos("Y: ");
    ShowMessage(Setup->Strings[i].SubString(posx+3,posy-posx-4));
    ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));
}


Obacht geben da wird die Zeile
C/C++ Code:
ClientPosition_X: 0 ClientPosition_Y: 0
C/C++ Code:
ClientPosition_X: 0 ClientPosition_Y: 0
C/C++ Code:
ClientPosition_X: 0 ClientPosition_Y: 0

auch mit angezeigt

bzw. in
Code:
 ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));
Code:
ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));
Code:
 ShowMessage(Setup->Strings[i].SubString(posy+3,Setup->Strings[i].Length()-posy-posx+1));

-posy-posx+1 kann nicht stimmen

_________________
MfG
VergissEs


Zuletzt bearbeitet von VergissEs am 22:09:37 03.09.2010, insgesamt 1-mal bearbeitet
taper71
Unregistrierter




Beitrag taper71 Unregistrierter 18:04:16 04.09.2010   Titel:              Zitieren

Wenn sich am Aufbau der Daten nichts ändert dann so:
C/C++ Code:
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
Setup->Delimiter=' ';
Setup->LoadFromFile("liste.txt");
Setup->DelimitedText = Setup->Text;
for(int i=0;i<Setup->Count-1;i++)
{
    if(Setup->Strings [i]=="X:") ShowMessage("X:"+Setup->Strings[i+1]);
    else if(Setup->Strings [i]=="Y:") ShowMessage("Y:"+Setup->Strings[i+1]);
}
C/C++ Code:
1
2
3
4
5
6
7
8
Setup->Delimiter=' ';
Setup->LoadFromFile("liste.txt");
Setup->DelimitedText = Setup->Text;
for(int i=0;i<Setup->Count-1;i++)
{
if(Setup->Strings [i]=="X:") ShowMessage("X:"+Setup->Strings[i+1]);
else if(Setup->Strings [i]=="Y:") ShowMessage("Y:"+Setup->Strings[i+1]);
}
C/C++ Code:
1
2
3
4
5
6
7
8
Setup->Delimiter=' ';
Setup->LoadFromFile("liste.txt");
Setup->DelimitedText = Setup->Text;
for(int i=0;i<Setup->Count-1;i++)
{
    if(Setup->Strings [i]=="X:") ShowMessage("X:"+Setup->Strings[i+1]);
    else if(Setup->Strings [i]=="Y:") ShowMessage("Y:"+Setup->Strings[i+1]);
}
C/C++ Forum :: VCL (C++ Builder) ::  Schön oder Mist ?   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.