![]() |
Datenimport von Zahlen einer seltsamen Datei
Hallo,
ich habe eine Datei, die keine Dateiendung hat. Wenn ich an diese nun ".txt" dranhänge, bekomme ich sowas zu sehen: ![]() Es soll sich dabei um Artikel handeln, der erste kostet: 52.50, der zweite 94.11 usw. Wie kann ich jetzt diese Werte in ein dynaisches Array bringen? Also ich denk mal da brauch ich eine Schleife, die weiß, dass dieses komische Viereck den nächsten Wert andeutet? am Ende sollte es so aussehen: artikel[1] = 52.50 artikel[2] = 94.11 ... Aber wie setzte ich das mit dem TOpenDialog und das dynamische Array um? Danke für Ratschläge tc |
Re: Datenimport von Zahlen einer seltsamen Datei
Das Quadrat ist ein Sonderzeichen, wenn es immer das selbe ist kannst du es als Trennzeichen verwenden.
|
Re: Datenimport von Zahlen einer seltsamen Datei
aber wie funktioniert das genau? ich bin leider noch anfänger.
|
Re: Datenimport von Zahlen einer seltsamen Datei
Auf den ersten Blick drängt sich mir den Verdacht auf, dass es sich um eine typisierte Datei handelt. Versuch es mal so (ungetestet):
Delphi-Quellcode:
type TBetrag = string[5];
procedure Einlesen; var BetrArray: array of TBetrag; Betr: TBetrag; f: file of TBetrag; begin SetLength(BetrArray,0); AssignFile(f,'Geld.txt'); {$I-} Reset(f); {$I+} if IOResult = 0 then begin while not EOF(f) do begin read(f,Betr); SetLength(BetrArray,Length(BetrArray) + 1); BetrArray[Pred(Length(BetrArray))] := Betr; end; CloseFile(f); end; end; |
Re: Datenimport von Zahlen einer seltsamen Datei
Für mich sieht es aus, als sei dies ein Ausschnitt einer Materialdatei zu BWInf Aufgabe 2, denn die hat, sofern ich mich erinnere, Unix-Newlines.
|
Re: Datenimport von Zahlen einer seltsamen Datei
Einfach per Stringliste:
Delphi-Quellcode:
var
sl: TStrings; ... begin ... sl := TStringList.Create; sl.Delimiter := <Trennzeichen>; sl.DelimitedText := <Text>; ... zahl1 := sl.Strings[0]; zahl2 := sl.Strings[1]; |
Re: Datenimport von Zahlen einer seltsamen Datei
hey danke für eure beiden vorschläge/alternativen
mkinzler sei mir nicht böse ich probier erstmal den von DeddyH, obwohl ich da nicht wirklich durchblicke, allerdings ist das Array schon bei ihm schon fertig. |
Re: Datenimport von Zahlen einer seltsamen Datei
*Ähm*, bedenke aber, dass das eine lokale Variable ist (nur zum Testen), Du müsstest sie also global definieren, falls es funktioniert.
|
Re: Datenimport von Zahlen einer seltsamen Datei
Also ich würde mir das mal in einem Hexeditor ansehen.
Ich glaube auch, dass dieses Kästchen ein LF sein könnte. Dann kannste das wahrscheinlich gleich in eine Stringliste einlesen.
Delphi-Quellcode:
Gruss
myStringlist.LoadFromFile( Dateiname );
|
Re: Datenimport von Zahlen einer seltsamen Datei
Es würde ja genügen, die ersten 5 Zeichen der Datei einzulesen und sich mit Ord mal den ASCII-Code des 5.Zeichens anzeigen zu lassen.
|
Re: Datenimport von Zahlen einer seltsamen Datei
das ganze sieht so aus, als ob es sich um ein #13 oder #10 handelt. versuch die datei mal in einen anderen editor zu öffnen, vielleicht gibts da 'ne brauchbare darstellung... was ich vermute...
in aller regel, sollte das lesen keine probleme bereiten, wenn du mit readln versuchst diese datei zu lesen... ausserdem kannst dir mal ansehen, wie die datei im hex editor aussieht... denke, der sollte das rätsel lösen ... :-) HTH GG |
Re: Datenimport von Zahlen einer seltsamen Datei
Einfach mal in Wordpad öffnen.
|
Re: Datenimport von Zahlen einer seltsamen Datei
Zitat:
|
Re: Datenimport von Zahlen einer seltsamen Datei
also der Vorschlag von DeddyH klappt so nicht. Das array wird zwar wunderschön dynamisch aufgebaut, jedoch ist Inhalt, z.B. Betrarray[1] = 52.50 $a#. Das $a# stört natürlich. Ich habe mal probiert das Viereck wegzumachen, dann könnte man deken(wie Deddy es tat) ich nehme mir die ersten 5 zeichen für den ersten Wert, die nächsten fünf für den zweiten usw. das geht aber nicht weil es auch artikel gibt die 7.63 und nicht 70.63 kosten.
Ich muss also dieses Viereck irgendwie als Trennzeichen nehmen, ob das mit "myStringlist.LoadFromFile( Dateiname );" (danke an thkerkmann) einfach so geht, weiß ich nicht, aber ich will ja keine Stringliste sondern ein array, wo die Beträge drinnestehen. Welchen Datentyp im Array ist ist erstmal nicht so wichtig, noch ist mir die Effizienz halbwegs uninteressant. Also was muss bei Deddys Quelltext geändert werden, oder wie kann man in das array die idee von thkerkmann einbauen? Danke euch. Hier gibt es die Datei: ![]() |
Re: Datenimport von Zahlen einer seltsamen Datei
Wenn ich mir das Bild im ersten Beitrag ansehe, gibt es da einen Eintrag [Blank]9.01. Also sollten die Einträge schon gleich lang sein, oder ich habe einen Denkfehler.
|
Re: Datenimport von Zahlen einer seltsamen Datei
Die Datei lässt sich problemlos in ein Memo einlesen.
|
Re: Datenimport von Zahlen einer seltsamen Datei
und wie muss ich deinen code ändern, damit das klappt? Muss ich .txt weglassen? lag es vllt daran?
Danke für deine Hilfe! |
Re: Datenimport von Zahlen einer seltsamen Datei
Muss es unbedingt ein dynamisches Array sein?
|
Re: Datenimport von Zahlen einer seltsamen Datei
also wenn man schon die anzahl der artikel aus der datei auslesen könnte dann könnte man das array auch statisch machen.
|
Re: Datenimport von Zahlen einer seltsamen Datei
Ich meinte, ob man statt des Arrays nicht lieber eine TStringList nehmen kann.
|
Re: Datenimport von Zahlen einer seltsamen Datei
hm ne damit kenn ich mich nicht aus. aber ich verwende prozeduren, die ich so geschrieben habe, dass diese mit einem array arbeiten.
|
Re: Datenimport von Zahlen einer seltsamen Datei
Du brauchst die Zahlen als Zahlen oder als String?
|
Re: Datenimport von Zahlen einer seltsamen Datei
zahlen bitte.
|
Re: Datenimport von Zahlen einer seltsamen Datei
Liste der Anhänge anzeigen (Anzahl: 1)
also bei mir funktioniert das ganze problemlos ... wo lliegt das problem, bei deiner hausaufgabe....??
Delphi-Quellcode:
Edit: mal noch die datei hinzufüg:
program mist;
{$APPTYPE CONSOLE} uses SysUtils; var f: text; s: string; begin assign(f, 'pj-10'); reset(f); while not eof(f) do begin readln(f, s); writeln(s); end; close(f); readln; end. |
Re: Datenimport von Zahlen einer seltsamen Datei
Hier mein Testprojekt:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } DynArray: array of double; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var sList: TStringList; Eintrag: string; i: integer; begin SetLength(DynArray,0); sList := TStringList.Create; try sList.LoadFromFile('C:\pj-10'); //Dateinamen anpassen SetLength(DynArray,sList.Count); for i := 0 to sList.Count - 1 do begin Eintrag := StringReplace(sList[i],'.',DecimalSeparator,[]); DynArray[i] := StrToFloat(Eintrag); end; finally sList.Free; end; end; end. |
Re: Datenimport von Zahlen einer seltsamen Datei
wenn du probleme mit dem konvertieren der zahlen hast, mach bitte 'n neuen thread auf ...
|
Re: Datenimport von Zahlen einer seltsamen Datei
ok danke deddyh.
|
Re: Datenimport von Zahlen einer seltsamen Datei
@turbo:
Wenn da $a steht, ist es ein Zeilenumbruch. Beschäftige dich doch z.B. mal mit dem was z.B. mkinzler dir gezeigt hat. Da hast du mit 3 Zeilen Code die Datei eingelesen. Delphi-Hilfe von TStringList angucken!
Delphi-Quellcode:
Ist in meinen Augen "komfortabler", als die Datei manuell auszulesen.
var
sl: TStringList; begin sl := TStringList.Create; try sl.Delimiter := Chr($a); sl.LoadFromFile ('C:\...'); showmessage (Trim (sl[0])); showmessage (Trim (sl[1])); finally FreeAndNil (sl); end; end; |
Re: Datenimport von Zahlen einer seltsamen Datei
denke, das nimmt sich nicht viel. man muss ja nix konvertieren :twisted:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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