Hi @ all,
ich hab mal wieder ein paar graue Haare mehr bekommen.
Mein Problem ist folgendes: Über die IdHTTP Kompo funkte ich ein php skript an. Das gibt mir den Inhalt einer Datenbank aus. Dies tut es hintereinander weg, damit ich nicht nach umbrüchen parsen muss. Den Inhalt speicher ich in eine tmp datei. Bis hierhin kein Problem ^^
Dann habe ich folgenden Code:
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:
| procedure TForm1.Button8Click(Sender: TObject); var lStream: TMemoryStream; lParams: TStringStream; I,a: Integer; str,dir,neu,alt,test: string; substr: widestring; txt,tab: TextFile; table: array [0..6] of string; begin table[0]:='tab'; table[1]:='tabcfg'; table[2]:='tabareacfg'; table[3]:='htmltext'; table[4]:='project_categories'; table[5]:='projects_bak'; table[6]:='projects'; str:=''; GetDir(0,dir); if not Assigned(IdHttp1) then exit; lStream := TMemoryStream.create; lParams := TStringStream.create(''); try IdHttp1.Request.ContentType := 'application/x-www-form-urlencoded'; IdHttp1.get(internetseite,lStream); SetLength(str,lStream.Size); lStream.Position:=0; lStream.ReadBuffer(str[1],lStream.Size); except on E: Exception do showmessage('Fehler bei der Übertragung: ' + E.message); end; lstream.SaveToFile(dir+'\test.tmp'); AssignFile(txt,dir+'\test.tmp'); Reset(txt);
while i<=6 do begin AssignFile(tab,dir+'\'+table[i]+'.tmp'); Rewrite(tab); if alt<>'' then Writeln(tab,alt);
while not Eof(txt) do begin substr:=''; Readln(txt,substr); if i<6 then begin test:='~'+table[i+1]+'~'; if (AnsiPos(test,substr)>0) then begin neu:=''; alt:=''; for a := Length(table[i])+3 to (AnsiPos('~'+table[i+1]+'~',substr)-1) do begin neu:=neu+substr[a]; end; if ((Ansipos('~'+table[i+1]+'~',substr)+Length(table[i+1])+2)<Length(substr)) then begin for a := (AnsiPos('~'+table[i+1]+'~',substr)+Length(table[i+1])+2) to Length(substr)-1 do begin alt:=alt+substr[a]; end; end; Writeln(tab,neu); i:=i+1; CloseFile(tab); break; end else Writeln(tab,substr); end; end; end;
lParams.Free; lStream.Free; CloseFile(txt); CloseFile(tab); ShowMessage('FERTIG'); end; |
Ich habe also einen Array table in dem die Schlüsselwörter drin sind. Diese sind im text durch ~*~ gekennzeichnet. Beim ersten Element des Arrays funktioniert es einwandfrei, aber dann überhaupt nicht mehr

Er findet dann die Zeichenkombi ~tabareacfg~ nicht mehr

Obwohl sie doch da ist.
Ich weiß einfach nicht mehr weiter und finde meinen fehler nicht!
Habt ihr vielleicht eine Ahnung?
Danke schonmal im Vorraus!
MfG
DorJo