Jump to content
php.lv forumi

pascal explode?


Recommended Posts

Posted (edited)

Gan jau, ka te arī mīt vairāki pascal pratēji, tāpēc pajautāšu jums vai pascalā arī ir iespējams sadalīt informāciju, piemēram šādu: vards|uzvards|19.

PHP tas būtu ~ tā jauni_dati = explode("|", dati);

Ko varētu izvadīt šādi:

vards uzvards 19

 

Tad kā to var izdarīt iekš pascal ņemot datus no faila ?

Edited by SkyD
Posted

Un kāpēc gan ne?

Pseidokodā:

jauni_dati = tukšs_masīvs();
while (ir atrasts '|' iekš dati)
begin
 tmp = izgriezt_gabalu_no(dati);
 pielikt_beigās_(jani_dati, tmp);
end;

Posted

kaa, lai ieksh while cikla es mekleeju tieshi | simbolu? vinjsh man izvada veselu rindu bla|bla|bla..

un kaa vinju izgriezt?

Posted

Skaties uz Pos funkciju, ja nemaldos.

 

Un izgriež ar Copy funkciju, ja nemaldos.

 

(sliktākajā gadījumā taču pats varēji for (i=1..length) if i=='|' break uztaisīt tak) eh.. Vai vismaz manuāli atšķirt par string funkcijām...

Posted

Sita briniskiga funkcija noder, ja vajag dabut ara kadu elementu no stringa ar konkretu indeksu.

 

// Parametri: [1] strings, no kura izvilkt elementu, [2] atdalosais simbols, [3] elementa indekss
function GetToken(aString, SepChar: string; TokenNum: Byte): string;
var
 Token: string;
 StrLen: Integer;
 Num: Integer;
 EndofToken: Integer;
begin
 StrLen := Length(aString);
 Num := 1;
 EndofToken := StrLen;
 while ((Num <= TokenNum) and (EndofToken <> 0)) do
 begin
EndofToken := Pos(SepChar, aString);
if EndofToken <> 0 then
begin
  Token := Copy(aString, 1, EndofToken - 1);
  Delete(aString, 1, EndofToken);
  Inc(Num);
end
else
  Token := aString;
 end;
 if Num >= TokenNum then
Result := Token
 else
Result := '';
end;

 

Piemers:

 

GetToken('Word1 Word2 Word3', 2, ' ') = 'Word2'
GetToken('Word1/Word2/Word3', 2, '/') = 'Word2'

×
×
  • Create New...