[C++] String met spatie herkenning

Pagina: 1
Acties:
  • 366 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 41231

Topicstarter
Ik ben bezig met een programmatje te schrijven
die getallen in een tabel zet (StringGrid).

Maargoed ik wil het dus zo doen dat die de spaties herkent
zodat die naar de volgende kolom springt.

Dus als voorbeeld in een Edit box: 3 5 44 ofzo
Dat je 3 in een kolom zet, 5 in een kolom en 44 ook.

Ik ben al wel zover dat je alleen maar cijfers en spaties kan typen...
Die tekst moet dan wel een String of AnsiString tekst worden.

Kan iemand mij hierbij helpen?

Acties:
  • 0 Henk 'm!

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-05 21:33

Varienaja

Wie dit leest is gek.

Heb je voor jezelf al in woorden opgeschreven hoe een algoritme dat dit doet eruit zou moeten zien?

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

Anoniem: 41231

Topicstarter
Jawel...

C++:
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
31
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  String buffer ;
  buffer.SetLength (512) ;
  int length = sprintf (buffer.c_str (), "%s", (Edit1->Text + Edit2->Text).c_str()) ;
        buffer.SetLength (length) ;
        Label1->Caption = buffer ;


  StringGrid1->Cells[0][0] = Edit1->Text.c_str();
  StringGrid1->Cells[1][0] = Edit2->Text.c_str();
  StringGrid1->Cells[2][0] = buffer.c_str(), '%s';

//--------------------------------------------------------------------------

int P;
  String text = Edit3->Text ;

  int position = text.Pos(Edit4->Text);
  if (position != 0)
  {
    StringGrid1->Cells[0][1] = "Position" + String (position);



  }
  else
  {
    StringGrid1->Cells[0][1] = "Not Found" ;
  }
}


Afbeeldingslocatie: http://people.zeelandnet.nl/jaapcysouw/spatie.jpg

Hier heb je dus dat die 3 en die 5 bij elkaar optelt
en in dat 4de vak kan je een string ingeven en bepaalt die de positie

[ Voor 13% gewijzigd door Anoniem: 41231 op 16-10-2003 09:43 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 24-04 17:56

curry684

left part of the evil twins

Iets van deze strekking:
C++:
1
2
3
4
5
6
7
8
9
10
int Column = 0;
int Row = MyRowNumber;
int Position;
String Text = MyInputText;

while(Position = Text.Pos(' ') && Column < MaxColumnCount)
  {
  MyGrid[Column++][Row] = Text.SubString(1, Position);
  Text = Text.SubString(Position + 1, Text.Length - Position - 1;
  }

Je bent trouwens de afgelopen dagen erg veel basic vragen over C/C++ aan het stellen... mag ik vragen welk boek je gebruikt?

En schrap die sprintf eens heel hard (buffer overflow galore) en vervang dat hierdoor:
C++:
1
Label1->Caption = Edit1->Text + Edit2->Text;

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Anoniem: 41231

Topicstarter
Hm ja kheb wel weer wat meer ideetjes
ff proberen

Kben atm op mn stage veel bezig met C++ Builder
en ik gebruik het boek "C++ Builder HOW-TO" van John Miano

[ Voor 11% gewijzigd door Anoniem: 41231 op 16-10-2003 10:09 ]


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:20
Anoniem: 41231 schreef op 16 October 2003 @ 10:08:
Hm ja kheb wel weer wat meer ideetjes
ff proberen

Kben atm op mn stage veel bezig met C++ Builder
en ik gebruik het boek "C++ Builder HOW-TO" van John Miano
Dat lijkt me een boek over C++ Builder, niet zozeer over C++.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 24-04 17:56

curry684

left part of the evil twins

farlane schreef op 16 October 2003 @ 11:19:
[...]
Dat lijkt me een boek over C++ Builder, niet zozeer over C++.
Dat vind ik in dit opzicht juist positief, leert ie tenminste AnsiString goed te gebruiken ipv sprintf :) Maar dan moet je dat boek wel lezen natuurlijk ;)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

curry684 schreef op 16 oktober 2003 @ 09:50:
Iets van deze strekking:
C++:
1
Text = Text.SubString(Position + 1, Text.Length - Position - 1);
wel haakje sluiten he

Acties:
  • 0 Henk 'm!

Anoniem: 41231

Topicstarter
dat boek is meer voorbeelden enzo...
is best moeilijk voor te beginnen :(

Acties:
  • 0 Henk 'm!

Anoniem: 42142

Ik moest in een keer denken aan 1 regel (nou ja, 3 dan, in Delphi kan het in 1 regel) code om dit probleem op te lossen:
code:
1
2
3
  TReplaceFlags rf;
  rf << rfReplaceAll;
  StringGrid1->Rows[0]->Text = StringReplace(Edit1->Text, " ", "\r\n", rf);

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 24-04 17:56

curry684

left part of the evil twins

Anoniem: 42142 schreef op 16 October 2003 @ 15:38:
Ik moest in een keer denken aan 1 regel (nou ja, 3 dan, in Delphi kan het in 1 regel) code om dit probleem op te lossen:
code:
1
2
3
  TReplaceFlags rf;
  rf << rfReplaceAll;
  StringGrid1->Rows[0]->Text = StringReplace(Edit1->Text, " ", "\r\n", rf);
C++:
1
2
StringGrid1->Rows[0]->Text = 
      StringReplace(Edit1->Text, " ", "\r\n", TReplaceFlags << frReplaceAll);

:z

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Anoniem: 42142

curry684 schreef op 16 October 2003 @ 15:46:
C++:
1
2
StringGrid1->Rows[0]->Text = 
      StringReplace(Edit1->Text, " ", "\r\n", TReplaceFlags << frReplaceAll);

:z
_/-\o_

Was alleen maar om te zien of jullie wel opletten :+

Acties:
  • 0 Henk 'm!

Anoniem: 41231

Topicstarter
Kheb het voor elkaar :D

C++:
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int teller,T = 0,spatieteller = 0;
String text = Edit1->Text;

int I, J;
  for (I = 0; I < StringGrid1->ColCount; I++)
    for (J = 0; J < StringGrid1->RowCount; J++)
      StringGrid1->Cells[I][J] = ' ';

  for (teller=1; teller <= text.Length() ; teller++)
  {

  if (text[teller] == ' ')
     {
     spatieteller ++;
     T++;
     }

  if (text[teller] != ' ')
     {
     StringGrid1->Cells[T][0] = StringGrid1->Cells[T][0] + text[teller];
     }
  }

StringGrid1->ColCount = spatieteller + 1;
}


_/-\o_

[ Voor 8% gewijzigd door Anoniem: 41231 op 17-10-2003 11:58 ]


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 14-04 17:27
misschien even lezen wat 'else' doet.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 24-04 17:56

curry684

left part of the evil twins

MSalters schreef op 17 October 2003 @ 12:27:
misschien even lezen wat 'else' doet.
_o_

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Anoniem: 41231

Topicstarter
oh lol hehe :)

achja zo kan het ook :P
Pagina: 1