Wat het moet doen.
Ik open een gml bestand en zet dit in een memo.
Vervolgens zoek ik binnen de memo het deel op waarin de co?Ârdinaten zijn opgeslagen.
de co?Ârdinaten knip ik eruit en zet ik in een volgende memo.
vervolgens wil ik de co?Ârdinaat paren onder elkaar hebben omdat ze later in een nieuw ekst bestand opgeslagen worden.
(De memo's zijn tijdelijk. als het straks goed werkt gaat alles in het geheugen plaats vinden).
Open het gml bestand
Code:
procedure TForm1.Action_Open_GML_BestandExecute(Sender: TObject);
var
OpenDialog : TOpenDialog;
begin
OpenDialog := TOpenDialog.Create(self);
with OpenDialog do
begin
InitialDir := ApplicatiePad;
Options := [ofFileMustExist];
Filter := 'GML bestanden|*.gml|Tekstbestanden|*.txt';
FilterIndex := 1; //GML extensie gaat voor
if Execute then
begin
Memo1.Lines.Clear;
Memo1.Lines.LoadFromFile(openDialog.FileName)
end;
//else ShowMessage('Openen bestand is afgebroken.');
OpenDialog.Free;
end;
end;
Filter de co?Ârdinaten eruit:
Code:
function TForm1.Find_String(StartString, EndString: String): String;
var
i1, i2 : Integer;
sSubstr : String;
begin
result := '';
i1 := Pos(StartString, Memo1.text);
if i1 > 0 then
begin
i2 := PosEx(EndString, Memo1.text, i1);
if i2 > 0 then
begin
result := Copy(Memo1.text, i1 + Length(StartString), i2 - (i1 + Length(StartString)));
//gekopieerde tekst verwijderen zodat deze in een volgende zoekopdracht niet meer bestaat
//voorbereiden
Memo1.SetFocus;
Memo1.SelStart := i1-1;
Memo1.SelLength := Length(StartString) + Length(result) + Length(EndString);
memo1.SelText:=''; //verwijder de geselecteerde tekst
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo2.Lines.Clear;
memo2.Lines.AddStrings(Find_String('<gml:LinearRing><gml:coordinates>','</gml:coordinates></gml:LinearRing>'));
end;
En dan dacht ik de coordinaatparen onder elkaar te zetten:
Code:
procedure TForm1.Button4Click(Sender: TObject);
var
i : Integer;
s : string;
begin //Zet de co?Ârdinaten op een rijtje
memo3.Lines.Clear;
sl.Delimiter := ' ';
sl.StrictDelimiter := True;
for i := 0 to Memo2.Lines.Count -1 do
begin
s := Memo2.Lines[i];
sl.AddStrings(s);
end;
memo3.Lines.AddStrings(sl);
// memo3.Lines.AddStrings(sl);
end;
(In lazarus 1.08)
Bookmarks