Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Typ File mit Typ String addieren (https://www.delphipraxis.net/143408-typ-file-mit-typ-string-addieren.html)

SyntaxXx 15. Nov 2009 13:31


Typ File mit Typ String addieren
 
Hi Leute,

wiedereinmal benötige ich eure Hilfe.
Diesesmal aber ein wenig komplexer.

Ich habe jetzt eine .exe Datei in mein Programm geladen und zwar wie folgt:

Delphi-Quellcode:
  opendialog1.Execute;
  AssignFile( x,(OpenDialog1.Filename));
Jetzt möchte ich an das ende dieser datei einen String anfügen.
Ja ich weiß, das ganz hat keinen Sinn, weil der String nichts bewirkt.

Der einzige Grund,w arum ich das machen will ist folgender:

Ich möchte die Datei ein wenig vergrößern, damit ich sie auf Rapidshare laden kann, um dann ein wenig Punkte noch zusätzlich fürs herrunter laden bekomme^^.

Man könnte zwar auch einfach ne andere Datei mit der eigenlichen in ein .rar Archiv packen,a ber ich möchte es dennoch mal auf meine Weise machen.


Es wäre wirklich klasse, wenn ihr mir sagen könntet wie ich das mache.

SirThornberry 15. Nov 2009 13:43

Re: Typ File mit Typ String addieren
 
Willst du objektorientiert programmieren oder alles global halten und nur mit proceduren und funktionen arbeiten?

SyntaxXx 15. Nov 2009 13:49

Re: Typ File mit Typ String addieren
 
Nur Proceduren und funktionen.

Also der String, den ich einfügen will ist Konstant.

Also ohne Memo etc.

SirThornberry 15. Nov 2009 13:58

Re: Typ File mit Typ String addieren
 
Mir ging es mehr darum es mehr mehr Sinn macht dir die objektorientierte Variante zu zeigen oder die welche nicht viel mit objektorientiertem zu tun hat.
Denn aktuell bin ich verwirrt - du verwendest TOpenDialog (also eine Klasse) und vermutlich auch Forms (TForm auch eine Klasse) suchst aber danach wie man ohne Objekte in Dateien schreibt (also keine Konsequenz - mal objektorientiert mal nicht)

Hast du schon die Suche nach AssignFile bemüht oder die Hilfe?
Ich habe eben mal nach AssignFile in der Delphipraxis gesucht und dabei gleich Beispiele gefunden wie man es verwendet.

SyntaxXx 15. Nov 2009 14:07

Re: Typ File mit Typ String addieren
 
Achso^^

So sieht es wie folgt aus:

Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var x: File;
begin

  opendialog1.Execute;
  AssignFile( x,(OpenDialog1.Filename));
end;
Wie du siehst, ich benutze schon eine VCL Anwendung.


Jetzt habe ich mir das so gedacht:
Über den OpenDialog lade ich die .exe auf die Variable x.

Und nun möchte ich an das Ende einen String y hinzu fügen.

Aber der String ist feste vorgegeben.

Ums ganz krass zu sagen.

Ich hab die .Exe und an das ende möchte ich einen 3 MB String anhänge.
Das problem was ich habe ist folgendes:

x ist vom Typ File
und Der String ja ganz klar vom Typ String.

Und dann bekomm ich antürlich folgenden fehler:

[DCC Fehler] Unit1.pas(61): E2015 Operator ist auf diesen Operandentyp nicht anwendbar


So ist der Code:

Delphi-Quellcode:
x := x+y   //x = Typ File  y = Typ String

Hoffe das hat was klarheit gebracht

SirThornberry 15. Nov 2009 14:16

Re: Typ File mit Typ String addieren
 
Ich würde die Objektorientierte Variante vorziehen wenn du bereits damit angefangen hast:
Delphi-Quellcode:
var
  lStream: TFileStream;
begin
  if OpenDialog1.execute then
  begin
    lStream := TFileStream.Create(OpenDialog1.Filename, fmOpenReadWrite);
    try
      lStream.Size := lStream.Size + 1024*1024*3;
    finally
      lStream.Free;
    end;
  end;

SyntaxXx 23. Jan 2010 15:46

Re: Typ File mit Typ String addieren
 
Ok hab es jetzt so.

Jetzt sieht das alles so aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute = true then
  begin
    lStream := tFileStream.Create(OpenDialog1.FileName, fmOpenRead);
    Edit1.Text := OpenDialog1.FileName;
      try
        SetLength(Buffer , lStream.Size);
        lStream.Read(Buffer[1], lStream.Size);
      finally

      end;

  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 lStream.Size := lStream.Size + 1024*1024*3;
 Edit3.Text := IntToStr(lstream.Size);

Jetzt habe ich aber noch 2 Sachen.

1. Wofür genau bzw was genau bewirkt

Delphi-Quellcode:
        SetLength(Buffer , lStream.Size);
        lStream.Read(Buffer[1], lStream.Size);
2. Wenn ich das so jetzt starte und mir die Größe ausgeben will bekomme ich nen fehler das der Zugriff verweigert wurde.

Wenn ich aber nur

Delphi-Quellcode:
 Edit3.Text := IntToStr(lstream.Size);
[/delphi]

Habe also ohne noch ws zu multiplizieren, dann kann ich mir die Größe ausgeben lassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz