[Delphi] Usuwanie stringów (ciągów znakó :P nie.

0

mam oto taki string:
( 180 168 104 ) ( 180 488 104 ) ( 180 488 -80 ) castle_floor/floor_c04c 64 -176 -90 0.500000 0.500000 0 0 0

no i teraz chciałbym wyciągnąć
4 pozycje z niego:

mianowicie pozycje "180 168 104 ", "180 488 104 ", "180 488 -80 " i "castle_floor/floor_c04c "

najlepiej aby od razu ktos mi to zapisal do:
type p = record
x,y,z : single;
end;

var
punkt1, punkt2, punkt3 : p;

Rozumiecie nie?
a castle_floor/floor_c04c do jakiegos tam innego stringa :)

kto mi pomoze?

0

Podziel stringa na części funkcją Split z B4P (kod poniżej)

[code]
procedure TfrmMain.Split(Value: string; var Output: TArrSplitTemp);
var iCount : Integer;

procedure Explode;
var
Found : Integer;
begin
SetLength(Output, iCount+1);
Found := Pos(KeyChar, Value); // najpierw nastepuje odnalezienie szukanego znaku

{ pozniej za pomoca funkcji Copy nastepuje skopiowanie czesci danych do elementu
tablicy }
Output[iCount] := Copy(Value, 1, Found -1);
Delete(Value, 1, Found); // skopiowane juz dane zostaja ze stringa usuniete
Inc(iCount); // zwiększenie licznika

Found := Pos(KeyChar, Value); // ponowne odszukanie znaku KeyChar
if Found > 0 then Explode; // w razie znaleienia ponownie wywolaj te procedure

end;

begin
{
Funkcja Split powoduje rozdzielenie danych ze stringa na kilka(kilkanascie)
elementow i przypisanie jej do tablicy Output. Procedura ta wywoluje inna - Explode,
ktora to jest procedura rekurencyjna (o rekurencji mozesz poczytac m.in na stronie
www.4programmers.net/algo/ ) i to ona ma kluczowe zadanie rozdzielenie lancucha.
}
iCount := 0;
SetLength(Output, 1); // okreslenie liczby elementow tablicy dynamicznej
Insert(KeyChar, Value, Length(Value)+1); // dodanie na samym koncu lancucha ze stalej KeyChar

Explode; // wywolanie funkcji rekurencyjnej

end;
[/code]

TArrSplitTemp zadeklaruj w sekcji type ten sposób:

TArrSplitTemp = array of string;

A zmienną globalną KeyChar tak:

KeyChar : Char = ' '; //spacja w cudzysłowach

Później chyba se poradzisz. Łańcuch będzie podzielony na części i wciśnięty do tablicy. Pamiętaj tylko że np. 1, 5 i 6 komórka będą zawiarały znaki "(" i ")".

1 użytkowników online, w tym zalogowanych: 0, gości: 1