Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi c code nach delphui übersetzen (https://www.delphipraxis.net/46365-c-code-nach-delphui-uebersetzen.html)

Klaus-B.Schmidt 23. Mai 2005 19:43


c code nach delphui übersetzen
 
hallo,
ich hab eine frage oder auch ein problem, und den einzigen ausweg, den ich sehe ist, diese
beiden c codes in die delphi sprache umzussetzen, sodass man sie in programmen verwenden kann.
da iuch eine ahnuzng von habe, frage ich euch
-----------------------
code 1
-----------------------
Code:
include <stdio.h>
int main()
{
// convert text file to plp
char c;
c = getchar();
while(!feof(stdin)){
putchar(c); // copy char to output
putchar('\0'); // append zero after each char
c = getchar();
}
}
-----------------------
code 2
-----------------------

CODE
Code:
#include <stdio.h>
int main()
{
// convert plp file to text
char c;
c = getchar();
while(!feof(stdin)) {
if(c!='\0') // filter zeros
putchar(c);
c = getchar();
}
}

besten dank für eure bemühungen .

MfG
Klaus

[edit=alcaeus]Code-Tags eingefügt. Beim nächsten Mal bitte selbst machen. Danke :) Mfg, alcaeus[/edit]

Waldteufel 23. Mai 2005 19:51

Re: c code nach delphui übersetzen
 
Hi.

Delphi-Quellcode:
{code 1}

program code1;

uses
  System;

var
  c : char;
begin
  // convert text file to plp
  Read(c);
  while c <> #26 do
  begin
    Write(c, #0); // copy char to output + append zero after each char
    Read(c);
  end;
end.
Delphi-Quellcode:
program code2;

uses
  System;

var
  c : char;
begin
  // convert plp file to text
  Read(c);
  while c <> #26 do
  begin
    if c <> #0 then // filter zeros
      Write(c);
    Read(c);
  end;
end.
[edit] Das ist eine 1:1 Übersetzung. Für jeden C-Befehl einen Delphi-Befehl... Es geht sicherlich eleganter... ;-) [/edit]

Klaus-B.Schmidt 23. Mai 2005 20:03

Re: c code nach delphui übersetzen
 
erstmal bedank ich mich für die schnelle antwort, bloß hab ich keine ahnung, wie ich dies in ein ereignis einbinde, und als quelle bzw. ziel jeweils eine datei benutze.

MfG
Klaus

Waldteufel 23. Mai 2005 20:13

Re: c code nach delphui übersetzen
 
Hi.

z.B. so:

Delphi-Quellcode:

{ in Edit1 steht der Name der Eingabedatei }
{ in Edit2 steht der Name der Ausgabedatei }

procedure TForm1.Button1OnClick(Sender : TObject); // umwandeln
var
  c : char;
  fin, fout : file;
begin
  Assign(fin, Edit1.Text);
  ReSet(fin);
  Assign(fout, Edit2.Text);
  ReWrite(fout);
  // convert text file to plp
  Read(fin, c);
  while c <> #26 do
  begin
    Write(fout, c, #0); // copy char to output + append zero after each char
    Read(fin, c);
  end;
  Close(fin);
  Close(fout);
end;

procedure TForm1.Button2OnClick(Sender : TObject); // zurückwandeln
var
  c : char;
  fin, fout : file;
begin
  Assign(fin, Edit1.Text);
  ReSet(fin);
  Assign(fout, Edit2.Text);
  ReWrite(fout);
  // convert plp file to text
  Read(fin, c);
  while c <> #26 do
  begin
    if c <> #0 then // filter zeros
      Write(fout, c);
    Read(fin, c);
  end;
  Close(fin);
  Close(fout);
end;
Warnung: Ungetestet!

Klaus-B.Schmidt 23. Mai 2005 20:47

Re: c code nach delphui übersetzen
 
so, hab jetzt folgenden code :
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
   
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
var
  c : char;
  fin, fout : file;
begin
  Assign(fin, Edit1.Text);
  ReSet(fin);
  Assign(fout, Edit2.Text);
  ReWrite(fout);
  // convert plp file to text
  Read(fin, c);
  while c <> #26 do
  begin
    if c <> #0 then // filter zeros
      Write(fout, c);
    Read(fin, c);
  end;
  Close(fin);
  Close(fout);


end;

end.
und bekomme folgende fehler :
Code:
[Fehler] Unit1.pas(36): Inkompatible Typen: 'TPersistent' und 'file'
[Fehler] Unit1.pas(38): Inkompatible Typen: 'TPersistent' und 'file'
[Fehler] Unit1.pas(41): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'Char'
[Fehler] Unit1.pas(45): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'Char'
[Fehler] Unit1.pas(46): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'Char'
[Fehler] Unit1.pas(48): Zu viele Parameter
[Fehler] Unit1.pas(49): Zu viele Parameter
[Fataler Fehler] Project2.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

sECuRE 23. Mai 2005 21:07

Re: c code nach delphui übersetzen
 
Hi,

probier's mal mit TextFile statt File und ReadLn statt Read ;)

cu

marabu 23. Mai 2005 21:29

Re: c code nach delphui übersetzen
 
Was du da machst, das riecht nach Code-Konvertierung von ASCII 7-bit nach Unicode UTF-16. Dafür schreibt man kein Programm, sondern nimmt GNU RECODE - oder sehe ich das falsch?

Grüße vom marabu

Link eingebaut

Phistev 23. Mai 2005 21:39

Re: c code nach delphui übersetzen
 
Assign() weist ein Objekt einem anderen zu; Close() schließt das Formular. Die hier korrekten Befehle heißt AssignFile(...) und CloseFile(...).

Klaus-B.Schmidt 24. Mai 2005 12:44

Re: c code nach delphui übersetzen
 
habs jetzt geändert, bekomme aber immer noch filgende fehler:
Code:
  [Fehler] Unit1.pas(38): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'Char'
  [Fehler] Unit1.pas(42): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'Char'
  [Fehler] Unit1.pas(43): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'Char'
  [Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Edit: dürften die gleiche fehler sein, die beim ersten versuch aufgetreten sind, nur die zeilen sind durch neues proj. verschoben.


MfG
Klaus

marabu 24. Mai 2005 13:53

Re: c code nach delphui übersetzen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Du magst RECODE nicht, stimmt's?

Anbei eine Demo, wie es mit Delphi funktionieren könnte.

Grüße vom marabu

Klaus-B.Schmidt 24. Mai 2005 15:00

Re: c code nach delphui übersetzen
 
@marabu - deine möglichkeit hat leider keinen erfolg !

mir geht es eigentlich darum, dass ich diese kleine procedur in ein größeres programm intregieren kann, um die gewünschten output-file zu erstellen, und auch solche einzulesen.

MfG
Klaus

Nils_13 24. Mai 2005 15:39

Re: c code nach delphui übersetzen
 
Es gibt Programme zum übersetzen, dieses Thema ist schon oft aufgetaucht !

marabu 24. Mai 2005 15:44

Re: c code nach delphui übersetzen
 
Hallo Klaus,

bitte etwas genauer. Wenn etwas mit der Demo nicht stimmt, dann interessiert mich das. Auch sollten das die Mitglieder des Forums erfahren, die deinen thread mitlesen und sich dabei auch den Code herunter laden.

Was funktioniert nicht?
Welche Fehler treten auf?
Hast du Probleme bei der Übernahme als Prozedur in dein Programm?
Hast du Probleme mit C oder mit Object Pascal oder mit beidem?

Du musst genau sagen, wo dich der Schuh drückt, sonst kann man dir nicht helfen.

marabu

Klaus-B.Schmidt 24. Mai 2005 17:41

Re: c code nach delphui übersetzen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi, nach dem umwandeln mit dem programm ahb ich eine unsinnigere datei vorgefunden als vorher, sprich
die anstände zwischen den zeichen wurden vergrößert, und es wurde am eine allmögliches zeug angehängt, mit dem ich nichts anfangen kann.
im anhang einmal die originaldatei (MyFavorite.plp) und die kovertierte (MyFavorit.txt).

Mein ziel ist es eigentlich nur, die originaldatei mit delphi zu öffnen, die einträge in listview etc. hinzuzufügen, und nach editieren der list viel diese wieder in eine soclhe datei, wie datei zurückzuspeichern.

Da ich das ganze für ein größeres projekt (da man sieht, handelt es sich um eine playlist für einen Mp3Player) ein playlisteditor für solche formate, der auch das kopieren von Mp3s auf den Player für noobs (wie mein Bruder) zum kinderspiel amcht.


MfG
Klaus

Waldteufel 24. Mai 2005 17:43

Re: c code nach delphui übersetzen
 
Hi.

Oweh... Du hast die kodierte Datei nochmals kodiert... ;-)

Klaus-B.Schmidt 24. Mai 2005 18:15

Re: c code nach delphui übersetzen
 
dann fehlt mir ja die andere richtung - mit einer kann ich nciht wirklich viel anfangen, ich werds aber nochmals in der anderen richtung versuchen, und berichten, obs erfolgreich war.

MfG
Klaus

Klaus-B.Schmidt 24. Mai 2005 18:28

Re: c code nach delphui übersetzen
 
danke für den hinweis, in die richtung funktioniert es einwandfrei - so lag detr fehler bei mir, ich entschuldige mich für dieses versehen und bedanke mich nochmal bei allen recht herzlich - allein hätt ichs nciht geschafft

MfG
Klaus

marabu 25. Mai 2005 11:58

Re: c code nach delphui übersetzen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Klaus-B.Schmidt
Mein ziel ist es eigentlich nur, die originaldatei mit delphi zu öffnen, die einträge in listview etc. hinzuzufügen, und nach editieren der list viel diese wieder in eine soclhe datei, wie datei zurückzuspeichern.

Da ich das ganze für ein größeres projekt (da man sieht, handelt es sich um eine playlist für einen Mp3Player) ein playlisteditor für solche formate, der auch das kopieren von Mp3s auf den Player für noobs (wie mein Bruder) zum kinderspiel amcht.

Zu diesem Zweck muss die Datei nicht erst auf der Platte umgeformt werden. Außerdem ist der Ansatz mit dem eingefügten chr(0) nicht besonders tragfähig, wenn in einem song title ein Sonderzeichen auftaucht - die Verschlüsselung stimmt dann nicht mehr unbedingt. Und im übrigen fehlt der Datei das byte order mark. Kein anderes Programm kann mit so einer Datei so richtig etwas anfangen.

Lese deine Texte doch einfach direkt in die Listbox ein. Eine von vielen Möglichkeiten dazu findest du in der angehängten Demo. Viel Vergnügen noch mit deinem Projekt.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr.

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