AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Labels in C

Ein Thema von Horst0815 · begonnen am 11. Mai 2016 · letzter Beitrag vom 11. Mai 2016
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz