Thema: C++ Labels in C

Einzelnen Beitrag anzeigen

Horst0815

Registriert seit: 23. Mai 2011
Ort: Görlitz
150 Beiträge
 
Delphi XE Starter
 
#1

Labels in C

  Alt 11. Mai 2016, 11:31
Delphi-Version: 5
muss ich bei Labels in C nur die nächste Zeile beachten oder wie weit ersteckt sich hier das Label Z:

fsih ist als DWord deklariert und wird ohne Umwandlung als PLPSTR ausgegeben hab ich da was übersehen

Delphi-Quellcode:
LPSTR *FindData(LPSTR *buff, long bnum, char *data, int dnum)
{
Z: fsih = memchr(buff, data[0], bnum); // Szukanie pierwszego bajtu danych
if(fsih) // Znaleziono pierwszy bajt danych
{if(fsih+dnum > (long)buff+bnum) return 0; // Szukane dane są dłuższe od liczby bajtów, które pozostały do końca bloku pamięci
  if(!memcmp(fsih+1, data+1, dnum-1)) return fsih; // Znaleziono kolejne bajty danych
  else // Nie znaleziono kolejnych bajtów danych (zwiększenie pozycji szukania o 1 i ponowne szukanie)
  {bnum = bnum-(fsih+1-(long)buff);
    buff = fsih+1;
    goto Z;}
}
else return 0; // Nie znaleziono pierwszego bajtu danych
}

Delphi-Quellcode:
function memchr(const buf: Pointer; c: Char; len: size_t): Pointer;
var
  l: Char;
begin
  Result := buf;
  l := c;
  while len <> 0 do
  begin
    if PChar(Result)[0] = l then
      Exit;
    Inc(Integer(Result));
    Dec(len);
  end;
  Result := Nil;
end;

  Function FindData(buff: PLPSTR; bnum: long; data: PChar; dnum: Integer): PLPSTR;
begin
  if (fsih) <> 0 then // Znaleziono pierwszy bajt danych
  begin
    if (fsih + dnum) > (long(buff) + bnum) then
      Exit; // Szukane dane są dłuższe od liczby bajtów, które pozostały do końca bloku pamięci
    if not CompareMem(Pointer(fsih + 1), data + 1, dnum - 1) then
      Result := PLPSTR(fsih) // Znaleziono kolejne bajty danych
    else // Nie znaleziono kolejnych bajtów danych (zwiększenie pozycji szukania o 1 i ponowne szukanie)
    begin
      bnum := bnum - (fsih + 1 - long(buff));
      buff := PLPSTR(fsih + 1);
      fsih := DWord(memchr(buff, data[0], bnum));
    end;
  end
else
  Exit; // Nie znaleziono pierwszego bajtu danych
end;

Geändert von Horst0815 (11. Mai 2016 um 11:33 Uhr)
  Mit Zitat antworten Zitat