Показать сообщение отдельно

  #2  
Старый 09.08.2009, 12:08
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
По умолчанию

привет всем!
возникла сложность в обработке файлика на winapi нужно выделить строки! стандартными способами делфи нехочу делать!
пытаюсь сделать так
Код:
var
  Size:cardinal;
  mas:Array[0..65536] of char;
  Config:array of string;

procedure ReadConfig;
  var
    re:^integer;
    MyFile:integer;
  begin
    MyFile:= Integer(CreateFile(PChar('sittings.txt'), GENERIC_READ+GENERIC_WRITE,FILE_SHARE_READ+FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0));
    GetMem(re,Sizeof(re));
    size:=Getfilesize(MyFile,nil);
    ReadFile(THandle(MyFile), mas, size, LongWord(re^), nil);
   Closehandle(MyFile);
  end;

{$R *.dfm}
Function PosEx(Const SubStr, S: String; Offset: Cardinal = 1): Integer;
var
I,X: Integer;
Len, LenSubStr: Integer;
begin
If Offset = 1 Then
   Result := Pos(SubStr, S)
Else
begin
   I := Offset;
   LenSubStr := Length(SubStr);
   Len := Length(S) - LenSubStr + 1;
   While I <= Len Do
   begin
     If S[I] = SubStr[1] Then
     begin
       X := 1;
       While (X < LenSubStr) And (S[I + X] = SubStr[X + 1]) Do
         Inc(X);
       If (X = LenSubStr) Then
       begin
         Result := I;
         Exit;
       End;
     End;
     Inc(I);
   End;
   Result := 0;
End;
End;

procedure ObrabConfig;
  var
    i,j:integer;
    S:string;
  begin
  i:=1;
  form1.Label2.Caption:=inttostr(Size);
  while i<10771 do
    begin
      j:=posex(#13#10,mas,i);
      S:=copy(mas,i,j);
      i:=j+3;
      j:=0;
      Setlength(Config,high(Config)+2);
      Config[high(Config)]:=S;
      Form1.memo1.lines.Add(S);
      Form1.Label1.Caption:=inttostr(i);
     Application.ProcessMessages;
      if i>=10771 then
      showmessage('ok');
      Sleep(50);
    end;
  end;
но он выводит первою строку норма а потом гонит всякий "шлак"
что я делаю не так?
 
Ответить с цитированием