Results 1 to 3 of 3

Thread: Binaire DFM wijzigen/omzetten naar tekst

  1. #1

    Binaire DFM wijzigen/omzetten naar tekst

    Ik liep deze week tegen een probleempje aan. Ik moest een aanpassing doen aan een oud programma dat met Delphi 1 of 2 was gemaakt. Ik wilde dit overhalen naar mijn huidige Delphi versie (dat is 5, sorry) maar dat lukte niet helemaal. Er werd namelijk een eigengemaakt component gebruikt, TCheckListBox. Deze was afgeleid van TCustomGrid en botste dus nogal met de TCheckListBox die nu in de VCL zit.

    Nu had ik de unit met die checklistbox nog, dus heb ik de class hernoemd naar TAntiekeCheckListBox (voorbeeldnaam) en de source van het form aangepast. Het probleem was echter dat de dfm natuurlijk ook angepast moest worden, maar de dfm van Delphi 2 is binair opgeslagen. Ik kon 'm niet openen in Delphi, want dan zou het object 'verdwijnen' of omgezet worden naar een VCL TCheckListBox, met verlies van properties etc..

    Nu dacht ik eerst aan de functie ObjectBinaryToText waarmee een binaire stream (die je krijgt met TWriter.WriteComponent) om kan worden gezet naar object tekst (zoals je ziet als je een dfm bekijkt). Toen ik dat echter probeerde bleek het toch niet te werken. Gelukkig wees mijn geniale collega me op de functie ObjectResourceToText en inderdaad, die was het. Een binaire DFM bevat eerst een header en daarna de object tekst. ObjectResourceToText leest eerst die header uit en roept dan ObjectBinaryToText aan. De volgende functie opent een binaire DFM, converteert deze naar tekst en geeft het resultaat terug als string. Op deze manier heb ik mijn antieke DFM toch weten te fixen.
    Code:
    function ReadBinaryDFMAsText(const FileName: string): string;
    var
      src: TFileStream;
      tgt: TStringStream;
    begin
      tgt := TStringStream.Create('');
      try
        src := TFileStream.Create(FileName, fmOpenRead);
        ObjectResourceToText(src, tgt);
        Result := tgt.DataString;
      finally
        tgt.Free;
        src.Free;
      end;
    end;
    1+1=b

  2. #2
    C:\Program Files\Borland\Delphi\Bin\convert.exe is een handig tooltje die dat al doet
    We adore chaos because we like to restore order - M.C. Escher

  3. #3
    Tja, zat er ook wel in dat zoiets al bestond. Maar ja, ik wist het niet en dan is het schrijven van de bovenstaande functie sneller dan het opzoeken van zo'n tooltje.
    Maar toch bedankt, nu weet ik het voor de volgende keer.
    1+1=b

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Tekst naar *** met InputQuery
    By supersurver in forum Algemeen
    Replies: 4
    Last Post: 18-May-03, 11:11
  2. Inkomende tekst naar welk venster sturen?
    By Marcel0000 in forum Algemeen
    Replies: 11
    Last Post: 14-May-03, 16:28
  3. Replies: 24
    Last Post: 11-Feb-03, 20:36
  4. conversie van binair naar hexadecimaal
    By paulf in forum Algemeen
    Replies: 3
    Last Post: 08-Sep-02, 22:39
  5. Hulp nodig met omzetten naar Delphicode!
    By Remo in forum Algemeen
    Replies: 2
    Last Post: 29-May-02, 15:51

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •