Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 大量然后,您将其强制存储到磁盘的决定看起来就不那么聪明了。蒸汽是一种抽象,给你自由和灵活性。将文件存储在可执行文件旁边早已不可信,而不是用于便携式应用程序。你应该阅读流。值得理解抽象背后的想法。即使你的长辈不想知道,你也可以学习。如果你转向一个更自由的项目_C#_Delphi 7_Filestream - Fatal编程技术网

C# 大量然后,您将其强制存储到磁盘的决定看起来就不那么聪明了。蒸汽是一种抽象,给你自由和灵活性。将文件存储在可执行文件旁边早已不可信,而不是用于便携式应用程序。你应该阅读流。值得理解抽象背后的想法。即使你的长辈不想知道,你也可以学习。如果你转向一个更自由的项目

C# 大量然后,您将其强制存储到磁盘的决定看起来就不那么聪明了。蒸汽是一种抽象,给你自由和灵活性。将文件存储在可执行文件旁边早已不可信,而不是用于便携式应用程序。你应该阅读流。值得理解抽象背后的想法。即使你的长辈不想知道,你也可以学习。如果你转向一个更自由的项目,c#,delphi-7,filestream,C#,Delphi 7,Filestream,大量然后,您将其强制存储到磁盘的决定看起来就不那么聪明了。蒸汽是一种抽象,给你自由和灵活性。将文件存储在可执行文件旁边早已不可信,而不是用于便携式应用程序。你应该阅读流。值得理解抽象背后的想法。即使你的长辈不想知道,你也可以学习。如果你转向一个更自由的项目,将来可能会派上用场。这一点都不复杂。如果有什么不同的话,那就简单多了。当前的代码,包括Delphi和C#版本,在错误处理方面完全被破坏了。未能创建文件会导致可怕的运行时错误。Delphi代码的原始作者是无知的。按照指示,逐字翻译是一个非常糟糕


大量然后,您将其强制存储到磁盘的决定看起来就不那么聪明了。蒸汽是一种抽象,给你自由和灵活性。将文件存储在可执行文件旁边早已不可信,而不是用于便携式应用程序。你应该阅读流。值得理解抽象背后的想法。即使你的长辈不想知道,你也可以学习。如果你转向一个更自由的项目,将来可能会派上用场。这一点都不复杂。如果有什么不同的话,那就简单多了。当前的代码,包括Delphi和C#版本,在错误处理方面完全被破坏了。未能创建文件会导致可怕的运行时错误。Delphi代码的原始作者是无知的。按照指示,逐字翻译是一个非常糟糕的主意。标记为答案,但由于某种原因,它现在没有将数据写入for循环?我有
using
语句,其中包含
for循环
。无需担心!似乎只是我拥有的读取文件的测试程序有问题。@pfferno您在哪里检查文件是否有数据?数据将被缓冲,缓冲区将只在缓冲区已满时写入-因此,在关闭文件之前,部分数据可能不会被写入。操作完成后,我关闭了进行写入的应用程序。我用一个不同的应用程序测试了它来读取数据,它似乎都在那里,所以我们很好!感谢标记为答案,但出于某种原因,它现在没有将数据写入for循环?我有
using
语句,其中包含
for循环
。无需担心!似乎只是我拥有的读取文件的测试程序有问题。@pfferno您在哪里检查文件是否有数据?数据将被缓冲,缓冲区将只在缓冲区已满时写入-因此,在关闭文件之前,部分数据可能不会被写入。操作完成后,我关闭了进行写入的应用程序。我用一个不同的应用程序测试了它来读取数据,它似乎都在那里,所以我们很好!谢谢
CONST
   RecordSize= 128;
   HeaderSize=128;

TESTrec = packed record
     now: TDateTime;
     //other fields here
     end;

TESThdrrec = packed record
    now: TDateTime;
    Firsttime: TDateTime;
    Lasttime: TDateTime;
    //other fields listed here
    end;

Function TRampBuildForm.CreateTest(FilePath:String;StartTime:TDateTime;EndTime:TDateTime):Boolean;
var
    Records:Int64;
    CurrentOffSet:Int64;
    CurrentTime:TDateTime;
    NewRec:TESTrec;
    NewHeader:TESThdrrec;
    ix:Integer;
    percent:Integer;

begin
    Try
      RampStream:=TFileStream.Create(FilePath,fmCreate OR fmShareExclusive );
    except
      ShowMessage('cannot create Ramp '+Rampname+chr(13)+'Check to see if file is open');
      CreateTest:=false;
    end;
    FillChar(NewHeader,HeaderSize,0);
    NewHeader.now:=Now;
    NewHeader.Firsttime:=StartTime;
    NewHeader.LastTime:= EndTime;
    FirstAllowableTime:=StartTime;
    LastAllowableTime:=EndTime;

    Records:= Round((EndTime-StartTime)/ONE_SECOND)+1;
    RampStream.Write(NewHeader,HeaderSize);

    FillChar(NewRec,RecordSize,0);
    label8.Caption:='Expanding ';
    Progressbar1.Position:=0;
    CurrentTime:=StartTime;
    percent:=0;
    refresh;
    Application.ProcessMessages;
    For ix:= 1 to Records do
    begin
        if (ix*100) div Records > percent then
        begin
            percent:= (ix*100) div Records;
            Progressbar1.position:=percent;
            refresh;
            Application.ProcessMessages
        end;
        NewRec.Now:=CurrentTime;
        RampStream.Write(NewRec,RecordSize);
        CurrentTime:=CurrentTime + ONE_SECOND;
    end;
    ProgressBar1.Position:=100;
    refresh;

    CreateTest:=True;
    RampStream.Free;
end;
const int RecordSize = 128;
const int HeaderSize = 128;

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct Testrec
{
    public double now;
    //other fields here
}

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct TESThdrrec
{
    public double now;
    public double Firsttime;
    public double Lasttime;
    //other fields here
}

private Boolean CreateTest(string FilePath, double StartTime, double EndTime)
        {
            long Records;
            long CurrentOffSet;
            double CurrentTime;
            TESTrec NewRec = new TESTrec();
            TESThdrrec NewHeader = new TESThdrrec();
            int ix;
            int percent;

            NewHeader.now = System.DateTime.Now.ToOADate();
            NewHeader.Firsttime = StartTime;
            NewHeader.Lasttime = EndTime;
            FirstAllowableTime = StartTime;
            LastAllowableTime = EndTime;

            if (!File.Exists(FilePath)) //if file doesn't exist
            {
                try
                {
                    using (RampStream = new FileStream(FilePath, FileMode.Create)) 
                    {
                        byte[] buffer = GetBytes2(NewHeader); //puts struct into byte array
                        RampStream.Write(buffer, 0, HeaderSize); //write byte array to file
                    }
                }
                catch (Exception e)
                {
                    System.Windows.MessageBox.Show("Cannot create file" + RampName + Environment.NewLine + "Error Message: " + e);
                }
            }

            Records = (long)(Math.Round((EndTime - StartTime) / ONE_SECOND) + 1);

            RampInfo.Content = "Expanding ";
            ProgressBar1.Value = 0;
            CurrentTime = StartTime;
            percent = 0;

            //TAKING LONG TIME HERE!!
            for (ix = 1; ix <= Records; ix++)
            {
                if (((ix * 100) / Records) > percent)
                {
                    percent = (ix * 100) / (int)Records;
                }
                NewRec.now = CurrentTime;
                using (RampStream = new FileStream(FilePath, FileMode.Open)) 
                {
                    byte[] buffer = GetBytes2(NewRec); //puts struct into byte array
                    RampStream.Write(buffer, 0, RecordSize); //write byte array to file
                }
                //RampStream.Write(NewRec, RecordSize);
                CurrentTime = CurrentTime + ONE_SECOND;
            }

            ProgressBar1.Value = 100;

            RampStream.Close();
            return true;
        }