runewalsh писал(а):Хоспаде, да какая у тебя там сложная логика?
Да уж сложнее чем у тебя.
runewalsh писал(а): На goto пишут те, кто ничего другого не знает, и получается чушь.
- Код: Выделить всё
- FUNCTION CITALNIK(IMJA_FAILA_SOHRANKI5: ANSISTRING;VAR S5: ARRAY OF STRING; VAR Z5: ARRAY OF ANSISTRING;LIMIT: LONGINT): BOOLEAN;
 VAR
 DLINA_A2: LONGINT=1000;
 QQ3,ADRESA3: ARRAY OF BYTE;
 ADRESA2: ARRAY OF LONGINT;
 M2,E2,C2,I2,R2,Y2,T2: LONGINT;
 KOLP: LONGINT;
 X64: INT64;
 {$IFNDEF LINUX}
 Z64: SYSUTILS.THANDLE;
 {$ENDIF}
 {$IFDEF LINUX}
 Z64: INT64;
 {$ENDIF LINUX}
 LABEL
 1,2,5, 99,100,101;
 BEGIN
 CITALNIK:=FALSE;
 {$IFDEF WINDOWS}
 IMJA_FAILA_SOHRANKI5:=PUTI_MAZDAJA(IMJA_FAILA_SOHRANKI5);
 {$ENDIF WINDOWS}
 IF PADLOFAIL(IMJA_FAILA_SOHRANKI5)=FALSE THEN GOTO 101;
 KOLP:=LENGTH(S5);
 Z64:=SYSUTILS.FILEOPEN(IMJA_FAILA_SOHRANKI5, fmOpenRead);
 IF Z64=VINDOFAILOBAG THEN GOTO 100; //КОНСТАНТА ЕСТЬ ДЛЯ ЛИНУКСА, ВИН32 И ВИН64
 X64:=SYSUTILS.FILESEEK(Z64,0,2);
 SYSUTILS.FILESEEK(Z64,0,0);
 IF X64>LIMIT THEN X64:=LIMIT;
 IF X64<1 THEN GOTO 99;
 SETLENGTH(QQ3,X64+200);
 FOR M2:=X64 TO X64+200-1 DO QQ3[M2]:=0;
 M2:=X64;
 E2:=0;
 SYSUTILS.FILEREAD(Z64,QQ3[1],X64);
 SETLENGTH(ADRESA2,DLINA_A2+2);
 SETLENGTH(ADRESA3,DLINA_A2+2);
 ADRESA2[0]:=1;
 ADRESA2[1]:=X64;
 ADRESA3[1]:=0;
 C2:=0;
 FOR E2:=1 TO X64 DO BEGIN
 IF QQ3[E2] IN [10,13]=FALSE THEN GOTO 5;
 IF QQ3[E2+1]<>36 THEN GOTO 5;
 INC(C2);
 IF C2>DLINA_A2 THEN BEGIN
 DLINA_A2:=DLINA_A2+2000;
 SETLENGTH(ADRESA2,DLINA_A2+2);
 SETLENGTH(ADRESA3,DLINA_A2+2);
 END;
 ADRESA2[0]:=C2;
 ADRESA2[C2]:=E2;
 ADRESA3[C2]:=0;
 5:
 END;
 FOR I2:=0 TO KOLP-1 DO BEGIN
 Z5[I2]:='';
 FOR C2:=1 TO ADRESA2[0] DO BEGIN
 IF ADRESA3[C2]=1 THEN GOTO 2;
 E2:=ADRESA2[C2];
 FOR R2:=1 TO LENGTH(S5[I2]) DO BEGIN
 IF QQ3[E2+R2+1]<>ORD(S5[I2,R2]) THEN GOTO 2;
 IF QQ3[E2+R2+1]=39 THEN BEGIN
 Y2:=1;
 ADRESA3[C2]:=1;
 FOR T2:=R2+1 TO X64 DO BEGIN
 IF QQ3[E2+T2+1] IN [10,13] THEN GOTO 1;
 Z5[I2]:=Z5[I2]+CHR(QQ3[E2+T2+1]);
 IF QQ3[E2+T2+1]=39 THEN GOTO 1;
 INC(Y2);
 END;
 GOTO 1;
 END;
 END;
 2:
 END;
 1:
 END;
 99:
 CITALNIK:=TRUE;
 100:
 SYSUTILS.FILECLOSE(Z64);
 101:
 END;
Ну и где тут чушь? Даже баг sysutils учтён. Грузит данные из файла прекрасно, классы тут не нужны от слова совсем. Лепить кучу классов чтобы не использовать гото в цикле это маразм.
Давай сюда пример, где с goto проще, чем с таким «паттерном „состояние“» (или как это называется).
Когда все эти три комнаты существуют одновременно, в каждой из них кипит жизнь, но рисуется на экране лишь одна. Просто запустить поле класса в таком случае недостаточно, необходимо ещё наладить асинхронную обработку самогенерирующихся событий. Ты описал мыльное кино уровня Диззи, только с более лучшей графикой.




 Это раввин решать будеь, человек ты или как, вполне возможно он решит что твой кот к человекам ближе. А в паспорте написано что ты гражданин и подразумевается что принадлежишь к людям. Даже в конституции РФ есть права человека, а есть людей/граждан.
 Это раввин решать будеь, человек ты или как, вполне возможно он решит что твой кот к человекам ближе. А в паспорте написано что ты гражданин и подразумевается что принадлежишь к людям. Даже в конституции РФ есть права человека, а есть людей/граждан. ;
; О размере думать нужно.
 О размере думать нужно. Вообще, мне кто-то писал, что не выкладывает не тестированный код... а тут...
 Вообще, мне кто-то писал, что не выкладывает не тестированный код... а тут...