Kezdőoldal » Számítástechnika » Programozás » Pascal: szövegfelbontásra...

Pascal: szövegfelbontásra (string, szóközök mentén) van valami egyszerűbb-praktikusabb mód? (bővebben lent)

Figyelt kérdés

Olyan megoldás van, ami az általam írtnál praktikusabban működik, figyel arra is, ha pl. adott sor szóközzel kezdődik, üres sorokat nem tesz be?

Az általam írt esetén utolsó szó kimarad, pedig a hátultesztelős ciklus miatt le kellene hogy fussson.

Fájlból szeretnék szöveget beolvasni és a szóközök mentén kinyerni a szavaka, amiket string tömbbe szeretnék tenni.

A tömbbe helyezést meg tudom csinálni, nem azért maradt ki mintha nem tudnám, nekem a legnagyobb kihívás inkább csak a "hibamentes felbontás".

program felbontas;


var

f : text;

s, s2 : string;

poz : byte;


begin

assign(f,'probalkozas');

reset(f);

while not eof (f) do

begin

ReadLn(f, s);

if length (s) > 0 then

begin

repeat

poz:=pos(' ',s);

s2 := copy(s, 1, poz);

delete(s, 1, poz);

WriteLn(s2);

until poz = 0;

end;

end;

close(f);

end.



2017. jan. 8. 19:54
1 2 3
 1/28 anonim ***** válasza:
0%

String Split.

Ha ezt egy nyelv nem támogatja natívan, akkor azt bizony el kell engedni...

2017. jan. 8. 20:11
Hasznos számodra ez a válasz?
 2/28 A kérdező kommentje:

Köszönöm, utánanézek.

Natívan nincs benne legalábbis találatot csak egy valaki által írt unit-re kaptam, de ez sem azt csinálja, ami nekem kellene.

2017. jan. 8. 20:19
 3/28 A kérdező kommentje:

# 1 :

Írod: "Ha ezt egy nyelv nem támogatja natívan, akkor azt bizony el kell engedni..."

Mármint magát a programozási nyelvet? Képtelen vagyok elengedni, nagyon szeretem a Pascal-t. :-)

C egy rémálom lenne, olyan szinten agyonbonyolították hogy az elképzelhetetlen, elég csak a függvényeknél a paraméterátadási módokra és egyebekre gondolni... :-(

2017. jan. 8. 20:33
 4/28 SimkoL ***** válasza:
100%
2017. jan. 8. 20:40
Hasznos számodra ez a válasz?
 5/28 A kérdező kommentje:

Kis segítséget kérhetek az ExtractStrings-et illetően?

Rákerestem Googlevel, mind olyan példák jöttek fel, melyekben nem sikerült kitalálnom hogy esetemben az én példámnál miként alkalmazhatom. :-(

2017. jan. 8. 21:00
 6/28 Hominida ***** válasza:
94%
#1, hülye vagy. Hogy nem programozó, az biztos. Írni kell rá egy függvényt, egyszer, és onnantól "natívan" támogatja.
2017. jan. 8. 21:01
Hasznos számodra ez a válasz?
 7/28 anonim ***** válasza:
15%
Hahaha, írogassatok csak alapfüggvényeket, én meg addig pénzt keresek egy valódi nyelvvel. :D :D :D
2017. jan. 8. 21:06
Hasznos számodra ez a válasz?
 8/28 SimkoL ***** válasza:

program Project2;


{$APPTYPE CONSOLE}


uses SysUtils, Classes;


var s : String;

List : TStringList;

i : Integer;

begin

s := ' TODO -oUser -cConsole Main : Insert code here }';

List := TStringList.Create;

try

ExtractStrings([' '], [' '], PChar(s), List);

for i := 0 to List.Count - 1 do WriteLn(List.Strings[i]);

finally

List.Free;

end;

ReadLn;

end.

2017. jan. 8. 21:12
Hasznos számodra ez a válasz?
 9/28 SimkoL ***** válasza:

De kijavítottam a tied is :


program Project2;


{$APPTYPE CONSOLE}


uses SysUtils;


var s, s2 : String;

poz : Integer;

begin

s := ' TODO -oUser -cConsole Main : Insert code here }';

if Length(s) > 0 then

repeat

poz := Pos(' ',s);

s2 := Copy(s, 1, poz - 1);

Delete(s, 1, poz);

if (Length(s2) > 0) and (s2 <> ' ') then WriteLn(s2);

until poz = 0;

if s <> ' ' then WriteLn(s);

ReadLn;

end.

2017. jan. 8. 22:41
Hasznos számodra ez a válasz?
 10/28 SimkoL ***** válasza:

Bocsi kimaradt az elejéről:

....

s := ' TODO -oUser -cConsole Main : Insert code here } ';

s := Trim(s);

....

- levágja a szóközöket elejéről, végéről, így helyes a működés;

2017. jan. 8. 22:49
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!