Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: ANSI-Unicode das alte Lied mal wieder

  Alt 4. Jul 2016, 14:04
@Sir Rufo: Genau das dachte ich auch immer. Aber so einfach ist der Spaß anscheinend nicht:

Delphi-Quellcode:
var
  F, FTmp, FTarget, FOk, FErr, FErrDesc: TFileName;
  Q, Q2: TUniQuery;
  SL: TStringList;
  sSql, FileContent: string;
  Writer: TStreamWriter;
begin
    sSql:= 'SELECT * FROM sync_jobs WHERE file_written=0;';
    if QuerySQL(sSql, Q) > 0 then begin
      while not Q.Eof do begin
        F:= Q.FieldByName('filename').AsString;
        FTarget:= IncludeTrailingPathDelimiter(FFolderBase) + F;
        FileContent:= Q.FieldByName('filecontent').AsString;
        FTmp:= TPath.GetTempPath + TPath.GetGUIDFileName;
        Writer:= TStreamWriter.Create(FTmp, FALSE, TEncoding.ASCII);
        try
          Writer.Write(FileContent);
        finally
          FreeAndNil(Writer);
        end;
        if TFile.Exists(FTarget) then TFile.Delete(FTarget);
        if TFile.Exists(FTmp) and not TFile.Exists(FTarget) then begin
          TFile.Move(FTmp, FTarget);
          if TFile.Exists(FTarget) then begin
            sSql:= Format('UPDATE sync_jobs SET file_written=1 WHERE filename=''%s'' LIMIT 1;', [F]);
            ExecuteSQL(sSql, Q2);
          end;
        end;
        Q.Next;
      end;
    end;
EDIT: Hat sich erledigt. War wohl ne Denkblockade ^^ Lösung: Writer:= TStreamWriter.Create(FTmp, FALSE, TEncoding.ANSI);
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter ( 4. Jul 2016 um 14:15 Uhr)
  Mit Zitat antworten Zitat