Poslední příspěvky

Stran: 1 ... 8 9 [10]
91
Obecné / Od určitého sektoru na PhysicalDrive přestane fungovat WriteFile
« Poslední příspěvek od Fantom007 kdy 21-07-2021, 11:39:30 »
Chtěl jsem si otestovat nový USB SSD disk. Vymazal jsem sektory na nulu (stačilo prvních pár tisíc), aby se netvářil jako zformátovaný a aby Windows neblokovaly přístup k některým oblastem. Na začátek každého sektoru potom zapíšu číslo sektoru, čas a datum. Zapisuji v blocích po 256 sektorech.
Přístup k souboru:
Kód: [Vybrat]
DriveHandle:=CreateFile(PChar('\\.\PHYSICALDRIVE'+IntToStr(i)), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ ,nil, OPEN_EXISTING, 0, 0)Nejprve nastavím file pointer na počáteční sektor pro zápis:
Kód: [Vybrat]
SetFilePointer(DriveHandle,Longint(DrivePos.LowPart),@DrivePos.HighPart,FILE_BEGIN);Potom se v cyklu volá
Kód: [Vybrat]
WriteFile(DriveHandle,BufferW[0],BytesToWrite,BytesWritten,nil) (kde BytesToWrite:=SectorsToWrite*SECTOR_SIZE).

Program krásně běží a zapisuje bez chyb, ale po následné kontrole jsem zjistil, že poslední zapsaný sektor na disku je 31 877 663 (dekadicky).
Pokud spustím znovu program, aby zapisoval od následujícího nezapsaného sektoru, program pomocí SetFilePointer správně nastaví file pointer a na správně místo správně zapíše celý blok dat (256 sektorů). Ačkoliv zápisový cyklus dále pokračuje (podle kontrolních výpisů bez chyb), na další sektory už zapsáno není. Při dalších pokusech se vždy jednou zapíše (popíše se dalších 256 sektorů) a konec. Pokud by WriteFile vrátila False, vypisuji chybu pomocí GetLastError, ale do chyby tento program vůbec nechodí. Vypadá to, jako by se od určitého sektoru špatně aktualizoval file pointer (ze začátku se správně automaticky posouvá o BytesToWrite (=BytesWritten). Nevím, jak zjistit aktuální pozici file pointeru (abych ji zkontroloval), umím ji pouze nastavit. Rozuměl bych tomu, kdyby byl disk fyzicky vadný, jenže při každém spuštění zápisu postoupí zapsaná oblast o dalších 256 sektorů (1 blok) a dále se zápisy neprovádějí.

Nevíte někdo, jestli má funkce WriteFile nějaký limit pro zápis do velikých souborů/disků? A jak tento limit  obejít? Nebo se jedná o jiný problém? Díky za odpovědi.
92
Obecné / Lazarus na raspi 4
« Poslední příspěvek od BigSandy kdy 21-07-2021, 07:21:27 »
Zdravím.
Nenajde se tu někdo kdo má?
Nepotřebují poradit s programovaním ale se vzdalenou plochou.
Laguje to.
93
Obecné / Re:EurekaLog - bug trackers
« Poslední příspěvek od Stanislav Hruška kdy 20-07-2021, 12:38:40 »
Hm, keď som to dobre pochopil, tak je za poplatky.
94
Obecné / Re:Ako spravne pouzit value TList v TDictionary<string,TList>
« Poslední příspěvek od František kdy 20-07-2021, 11:50:34 »
ten kod za whiile som vyhodil tou podmienkou, ale ti si naplnal SL stale tou istou hodnotou, chybal ti tam next, lebo tam nema co robit,
cyklus robi to tnaledovne:

next naplna SL
ked pride ku zmene GR tak to zapise do dict a creatne novy SL
ale pri poslednom cykle nedoje uz v starom kode ku zapisu (lebo cyklus konci skor ako dojde ku zmene GR) a preto som to poriesil tou duplicitou, no na tvoj podnet som to upravil tak ako to je teraz
95
Obecné / Re:Ako spravne pouzit value TList v TDictionary<string,TList>
« Poslední příspěvek od Stanislav Hruška kdy 20-07-2021, 11:40:37 »
Daný kód je až za cyklom while. Takže Next s tým nemá nič spoločné.
Ten vo while som neanalyzoval.
96
Obecné / EurekaLog - gmail mi zablokuje prijatie správy
« Poslední příspěvek od Stanislav Hruška kdy 20-07-2021, 11:37:10 »
Nastavil som si odosielanie správ na novo vytvorený účet. Pri prvom pokuse mi gmail zahlásil, že zdroj nie je bezpečný. Dal som voľbu, aby aj tak prijal. Žiaľ správy mi neprejdú. V účte neviem nič nájsť čím by som to povolil. V EurekaLog som tiež nič nenašiel. Vie mi niekto poradiť?
Dostávam takýto oznam
Citace
Can't execute command "SzdzO2xyM2NPdg=="
535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8  https://support.google.com/mail/?p=BadCredentials gn13sm6688478ejc.1 - gsmtp
a
Citace
Error code: 535; message: There is a process on other end of the pipe
Connection: smtp.gmail.com:587 (192.168.0.205:61922:61922 -> 142.250.102.109:587:587)
Socket log:
Connecting to smtp.gmail.com:587 -> 142.250.102.109:587
Connected to smtp.gmail.com:587 (192.168.0.205:61922:61922 -> 142.250.102.109:587:587)
220 smtp.gmail.com ESMTP gn13sm6688478ejc.1 - gsmtp
.
EHLO Stano-PC
250-smtp.gmail.com at your service, [5.178.56.144]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
.
STARTTLS
220 2.0.0 Ready to start TLS
.
SSL: SSL enabled
SSL: ClientCreateCredentials
SSL: No client certificate used
SSL: ClientHandshake
SSL: ClientHandshakeLoop
SSL: ClientHandshake OK
SSL: Remote Certificate:
SSL:   Version: 3
SSL:   Serial Number: 00889863079C163DAE0A00000000E83CF8
SSL:   Signature: 1.2.840.113549.1.1.11 (RSA SHA256 RSA)
SSL:   Encryption: 1.2.840.10045.2.1 (ECC PUBLIC KEY)
SSL:   Subject ID:
SSL:   DNS Name: smtp.gmail.com
SSL:   Server subject: CN=smtp.gmail.com
SSL:   Issuer ID:
SSL:   Server issuer: C=US, O=Google Trust Services LLC, CN=GTS CA 1C3
SSL:   Not Before: 22.6.2021 15:17:51
SSL:   Not After: 14.9.2021 15:17:50
SSL:   Chain:
SSL:     Serial Number: 0203BC53596B34C718F5015066
SSL:     CA subject: C=US, O=Google Trust Services LLC, CN=GTS CA 1C3
SSL:     CA issuer: C=US, O=Google Trust Services LLC, CN=GTS Root R1
SSL:     Serial Number: 77BD0D6CDB36F91AEA210FC4F058D30D
SSL:     CA subject: C=US, O=Google Trust Services LLC, CN=GTS Root R1
SSL:     CA issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
SSL:   End of Certificate Chain
SSL: Connection Info:
SSL:   Protocol: 00000800 (Microsoft TLS 1.2)
SSL:   Cipher: 0000660E [Class: DATA ENCRYPT; Type: BLOCK; SID: 14] (AES 128...
97
Obecné / Re:Ako spravne pouzit value TList v TDictionary<string,TList>
« Poslední příspěvek od František kdy 20-07-2021, 11:22:26 »
stanislav zabudol si na mtSynon.next; nakonci
Kód: [Vybrat]
   
    Item := TStringList.create();
    while not mtSynon.Eof do
    begin
      if (group <> Fsyno.AsInteger) or (mtSynon.RecordCount = mtSynon.RecNo) then
      begin
        if mtSynon.RecordCount = mtSynon.RecNo //pridame do SL posledny
            then Item.add(UpperCase(Fslovo.AsString)); 
        for i := 0 to Item.Count - 1 do
        begin
            DictSynon.Add(Item[i],Item);          //tu sa naplna Dict, to znamena ze pri poslednom prechode by cyklus while skoncil a nezapisal by do dict
        end;
        Item := TStringList.create();
        group := Fsyno.AsInteger;
      end;
      Item.add(UpperCase(Fslovo.AsString));  //tu sa naplna SL
      mtSynon.next;
    end;
98
Obecné / Re:Ako spravne pouzit value TList v TDictionary<string,TList>
« Poslední příspěvek od Stanislav Hruška kdy 20-07-2021, 10:10:39 »

Ešte jedna vec
Kód: Delphi [Vybrat]
  1.   if sl.Count > 0 then
  2.   begin
  3.     for I := 0 to sl.Count - 1 do
  4.       DictSyno.Add(sl[I], sl);
  5.   end;
Tá podmienka je celkom zbytočná. Pri sl.Count = 0 bude for I := 0 to -1 do. Podmienka pre cyklus nie je nikdy splnená a kód sa nikdy nespustí.
Tiež som to tak robil ;)
99
Obecné / Nova community edice na bazi 10.4.2
« Poslední příspěvek od Radek Červinka kdy 20-07-2021, 08:43:17 »
https://blogs.embarcadero.com/delphi-cbuilder-community-editions-now-available-in-version-10-4-2/

Pravidla jsou asi stejna, a pozor na pouziti z firemnich siti a VPN.
100
Obecné / Re:Ako spravne pouzit value TList v TDictionary<string,TList>
« Poslední příspěvek od František kdy 19-07-2021, 18:18:33 »
Misto TDictionary pouzij TObjectDictionary.
dikez, ako vzdy mi tvoj vyklad pomohol... hlavne ze som ho pochopil
este vyrez pouzitia slovnika
Kód: [Vybrat]
      if DictSynon.TryGetValue(Finding,valx)  then
      begin
        j := valx.Count;
        if j > 0 then
        begin
          result := result + '(';
          for ItemS in valx do
          begin
            result := result + Finding + ' like ' + QuotedStr('%' + ItemS + '%') + ' ';
            dec(j);
            if j > 0 then result := result + 'or ';
          end;
          result := result + ') ';
        end;
      end
      else
      begin
        result := result + Finding + ' like ' + QuotedStr('%' + ss + '%') + ' ';
      end;
     
Stran: 1 ... 8 9 [10]