Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

primena ParseRecord procedure na 5 CSV faljova - da li je moguće

[es] :: Pascal / Delphi / Kylix :: primena ParseRecord procedure na 5 CSV faljova - da li je moguće

[ Pregleda: 1596 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

developercorei3
Developer
Novi Sad

Član broj: 305052
Poruke: 2
*.dynamic.kdsinter.net.



Profil

icon primena ParseRecord procedure na 5 CSV faljova - da li je moguće14.07.2012. u 14:36 - pre 143 meseci
Imam jedan neobičan zahtev / problem:
- otvoriti 5 csv fajlova,
- izračunati srednju vrednost za svaku ćeliju,
- sačuvati 1 csv fajl sa novim vrednostima, koji ima istu strukturu kao 5 selektovanih.
Da li je moguće računati srednju vrednost matrice, tj. svake ćelije zasebno u Borland Delphi 7 ?

Code:

procedure TForm1.ParseRecord(sRecord: string; Row: integer);
var
  sField, subRecord: string;
  Col, PosComma, PosQ: integer;
begin
  Col := 0;

  repeat
    if Pos('"', sRecord) = 1 then
    begin
      subRecord := Copy(sRecord, 2, Length(sRecord) - 1);
      PosQ := Pos('"', subRecord);
      sField := Copy(sRecord, 2, PosQ - 1);
      // PosQ is position of double quotes in subRecord, which is one character
      //shorter than sRecord
      // Plus two is added due to the fact that there is a comma behind double quotes
      Delete(sRecord, 1, PosQ + 2);
    end
    else begin
      PosComma := Pos(',', sRecord);
      if PosComma > 0 then
      begin
        sField := Copy(sRecord, 1, PosComma - 1);
        Delete(sRecord, 1, PosComma);
      end
      else
        sField := sRecord;
    end;
    StringGrid1.Cells[Col, Row] := sField;
    Col := Col + 1;
  until PosComma = 0;

  // Set column number
  StringGrid1.ColCount := Col;
end;




[Ovu poruku je menjao savkic dana 14.07.2012. u 21:10 GMT+1]
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: primena ParseRecord procedure na 5 CSV faljova - da li je moguće14.07.2012. u 20:18 - pre 143 meseci
> Imam jedan neobičan zahtev / problem:
> - otvoriti 5 csv fajlova,
> - izračunati srednju vrednost za svaku ćeliju,
> - sačuvati 1 csv fajl sa novim vrednostima, koji ima istu strukturu kao 5 selektovanih.

Koji deo ti predstavlja problem?

> Da li je moguće računati srednju vrednost matrice, tj. svake ćelije zasebno u Borland Delphi 7 ?

Jeste, samo je manji problem kako ;) Elem, jedna ćelija sadrži string sa više numeričkih vrednosti razdvojenih nekim separatorom? Da bi dobio sve pojedinačne vrednosti možeš koristiti neku svoju funkciju, neku gotovu poput StrToken ili StrTokenToStrings iz JclStrings (JCL bibilioteka). Kada imaš pojedinačne vrednosti dalje lako možeš odrediti srednju vrednost...
 
Odgovor na temu

developercorei3
Developer
Novi Sad

Član broj: 305052
Poruke: 2
*.dynamic.kdsinter.net.



Profil

icon Re: primena ParseRecord procedure na 5 CSV faljova - da li je moguće26.07.2012. u 17:25 - pre 142 meseci
Hvala Igore,

Pronašao sam tačno to što si mi predložio na http://www.koders.com/delphi/f...AAF1241D90C486EDE5F0F568A.aspx


Code:
function StrToken(var S: AnsiString; Separator: AnsiChar): AnsiString;
var
  I: Integer;
begin
  I := Pos(Separator, S);
  if I <> 0 then
  begin
    Result := Copy(S, 1, I - 1);
    Delete(S, 1, I);
  end
  else
  begin
    Result := S;
    S := '';
  end;
end;

//------------------------------------------------------------------------------

procedure StrTokens(const S: AnsiString; const List: TStrings);
var
  Start: PChar;
  Token: string;
  Done: Boolean;
begin
  Assert(List <> nil);
  List.Clear;
  Start := Pointer(S);
  repeat
    Done := StrWord(Start, Token);
    if Token <> '' then
      List.Add(Token);
  until Done;
end;

//------------------------------------------------------------------------------

procedure StrTokenToStrings(S: AnsiString; Separator: AnsiChar; const List: TStrings);
var
  Token: AnsiString;
begin
  Assert(List <> nil);
  List.Clear;
  while S <> '' do
  begin
    Token := StrToken(S, Separator);
    List.Add(Token);
  end;
end;

//------------------------------------------------------------------------------


Javiću se sa utiscima, čim primenim jednu od navedenih funkcija.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: primena ParseRecord procedure na 5 CSV faljova - da li je moguće

[ Pregleda: 1596 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.