Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Delphi - bestanden openen

KVU
4 antwoorden
  • Er zijn in Delphi drie manieren om bestanden te gebruiken: Pascal file types, Windows file handles en streams.

    Van de eerste manier staat in de help: "These file types are obsolete and are incompatible with Windows file handles", terwijl ergens anders in de help vermeldt staat: "Use of the non-native Pascal file handlers such as FileOpen is not encouraged. These routines map to system routines and return OS file handles, not normal Pascal file variables. These are low-level file access routines. For normal file operations use AssignFile, Rewrite, and Reset instead."

    Welke van de drie is het beste te gebruiken als file-methode in een Windows-programma? De help spreekt zichzelf hier een beetje tegen. Het makkelijkst zou voor mij zijn, om gewoon de eerste vorm te gebruiken, omdat ik een oud Pascal-programma aan het omzetten ben. Maar misschien is een Windows-variant beter… Wie kan hier wat over zeggen?
  • [quote:be320c1eb0="KVU"]Er zijn in Delphi drie manieren om bestanden te gebruiken: Pascal file types, Windows file handles en streams.[/quote:be320c1eb0]
    [list:be320c1eb0]1. oude methode (non-native Pascal file handlers). Deze methode wordt mogelijk in de toekomst niet meer ondersteund. Niet gebruiken dus.
    2. nieuwe methode (via native Pascal functies, zoals [i:be320c1eb0]FileOpen[/i:be320c1eb0]. Aanbevolen manier. Alle administratie overhead wordt door Pascal opgevangen en verder transparant afgehandeld.
    3. FileStream. Uitbreiding op punt 2.
    4. Direct via de verschillende Win32 API functies waarvan [i:be320c1eb0]CreateFile[/i:be320c1eb0] de belangrijkste is.[/list:u:be320c1eb0]
    [quote:be320c1eb0="KVU"]
    Van de eerste manier staat in de help: "These file types are obsolete and are incompatible with Windows file handles", terwijl ergens anders in de help vermeldt staat: "Use of the non-native Pascal file handlers such as FileOpen is not encouraged. These routines map to system routines and return OS file handles, not normal Pascal file variables. These are low-level file access routines.
    [/quote:be320c1eb0]
    Ze willen hiermee zeggen dat je de verschillende functies niet zonder meer blindelings kunt vervangen door de andere variant. Gebruik dus alle bijbehorende functies uit dezelfde reeks voor een bepaalde taak.
    [quote:be320c1eb0="KVO"]
    [i:be320c1eb0]For normal file operations use AssignFile, Rewrite, and Reset instead.[/i:be320c1eb0]"
    [/quote:be320c1eb0]
    Lijkt me duidelijk.
    [quote:be320c1eb0="KVO"]
    Welke van de drie is het beste te gebruiken als file-methode in een Windows-programma? De help spreekt zichzelf hier een beetje tegen. Het makkelijkst zou voor mij zijn, om gewoon de eerste vorm te gebruiken, omdat ik een oud Pascal-programma aan het omzetten ben. Maar misschien is een Windows-variant beter… Wie kan hier wat over zeggen?[/quote:be320c1eb0]
    punt 2.

    Verschil in de functies AssignFile, Rewrite, Reset, etc. is minimaal in vergelijking met de oude functies.
  • Volgens mij haal ik een aantal dingen door elkaar.

    [code:1:796146e27b]var F:file of save_results;
    results:save_results;
    begin
    if FileExists(FName) then begin
    AssignFile(F,FName);
    Reset(F);
    Read(F,results);
    CloseFile(F);
    end;
    …[/code:1:796146e27b]

    Hier het stukje code dat ik nu gebruik (en perfect werkt). save_results is hierbij een monsterlijk record type, dat ik letterlijk uit het oude Pascal-programma overgenomen heb.
    Is dit de juiste Delphi-manier, of zitten hier gedateerde elementen in?
  • [quote:a5d460f857="KVU"]Volgens mij haal ik een aantal dingen door elkaar.

    [code:1:a5d460f857]var F:file of save_results;
    results:save_results;
    begin
    if FileExists(FName) then begin
    AssignFile(F,FName);
    Reset(F);
    Read(F,results);
    CloseFile(F);
    end;
    …[/code:1:a5d460f857]

    Hier het stukje code dat ik nu gebruik (en perfect werkt). save_results is hierbij een monsterlijk record type, dat ik letterlijk uit het oude Pascal-programma overgenomen heb.
    Is dit de juiste Delphi-manier, of zitten hier gedateerde elementen in?[/quote:a5d460f857]
    Lijkt mij zo wel goed. Wellicht dat je onder meer op basis van de Object Pascal Style Guide nog wat kunt aanpassen.
    [code:1:a5d460f857]
    var
    F: File of TSave_results;
    results: TSave_results;
    begin
    if FileExists(FName) then
    begin
    AssignFile(F,FName);
    Reset(F);
    try
    Read(F,results);
    finally
    CloseFile(F);
    end;
    end;
    …[/code:1:a5d460f857]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.