Pascal: szövegfelbontásra (string, szóközök mentén) van valami egyszerűbb-praktikusabb mód? (bővebben lent)
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.
String Split.
Ha ezt egy nyelv nem támogatja natívan, akkor azt bizony el kell engedni...
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.
# 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... :-(
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. :-(
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.
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.
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;
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!