Autor Beitrag
Biarchiv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: So 20.02.05 08:40 
Hallo,

ich hab folgenden Code den ich gern umbauen möchte.
Es geht darum:

Man kann in einem Memo Feld Dateinamen eingeben.
Jeder Dateiname hat eine neue Zeile.
Er soll nach jedem Dateinamen in der Datei suchen wobei er zwischen jedem Buchstaben
ein "00h" Wert einfügen muss.

Solte er den Wert gefunden haben muss er 17 Bytes hinter des begins vom Dateinamen zurück
springen. Das Problem ist das jeder Dateinamen verschieden groß ist.

Wie könnte man das lösen?


ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
//if CheckBox5.checked = true then
  begin
  {$I-}
  AssignFile(f, Form1.Edit1.Text);
  Reset(f,1);
  lPos := 0;
  if (IOResult = 0) then begin
    repeat

    {If Form1.RadioButton5.Checked = true then }lPos := lPos + 128;

    BlockRead(f,u,8,iRead);
    if (iRead = 8) then
      begin
      if(lstrcmp(u,PChar(dvdoption.Memo1.Lines[0])) = 0) then
      begin
      secerror := '1';
//      Showmessage(Format('"%s" at position %d',[u,lPos]));
//      showmessage('BlockWrite' + IntToStr(lPos));
//      fillchar(u,sizeof(u),$FF);

       Seek(f, lPos - length(dvdoption.Memo1.Lines[0]) - length(dvdoption.Memo1.Lines[0]) - 22);
       fillchar(u,sizeof(u),$05);
       BlockWrite(f,u,1,iWrite);
       ffound := '1';
{      Seek(f, lPos - 20);
      BlockRead(f,u,1,iRead);
      if (iRead = 1) then
        begin
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        BlockRead(f,u,1,iRead);
        if (lstrcmp(u,';') = 0) then ffound := '1';
        if not (ffound = '1') then Seek(f, lPos - 1);
        end;
        if ffound = '1' then
          begin
          Seek(f, lPos + 17);
          fillchar(u,sizeof(u),$FF);
          BlockWrite(f,u,1,iWrite);
          end; }

//      if (iWrite <> 110000) then break;
//      fillchar(u,sizeof(u),#0);
//      Label3.Caption := IntToStr(filelabel3) + IntToStr(1);
      end;
      end;
      until ffound = '1';
      CloseFile(f);
      end;
      {$S+}
  end;


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt