Die neuesten Produkte von GIGABYTE hier im Überblick
Hallo Leute,
habe auf Arbeit ein kleines Problem.
Und zwar haben wir eine Prüfsoftware die Seriennummern in eine entsprechende TXT-File durchnummeriert ablegt. Unser Kunde bekommt am Ende des Auftrages diese TXT-File.
Die Tabelle ist in etwa so aufgebaut:
<pre>001,.,.,.,..;
.
.
.
009,.,.,.,..;
00A,.,.,.,..;</pre>Für diese ".." werden per Zufall Zahlen von der Prüfsoftware generiert.
Für den nächsten Auftrag ist es notwendig das diese TXT-File leer ist. So das die TXT dann so aussehen muss:
<pre>001, , , , ;
.
.
.
009, , , , ;
00A, , , , ;</pre>Frage ist nun an Euch, wie ich diese Zahlen möglichst schnell und effektiv wieder aus der Tabelle entfernt bekomme?
Mit dem Befehl "Ersetzen." in Word oder Excel geht dies nicht, da die Zahlen keinem Schema folgen oder nach einer Reihenfolge abgelegt werden.
Bisher haben wir die Zahlen dann immer per Hand durch Leerzeichen ersetzt, was doch arg mühselig ist.
Nun seid Ihr gefragt. Ich hoffe ihr könnt mir helfen!
Flyer
Kann sein, dass ich das Problem nicht vollständig verstanden habe, aber warum macht ihr nicht nach jedem Auftrag:
[color=red]copy leere-TXT-File-Vorlage TXT-File</font color=red>
fry
PS: Beförderung! ![]()
Wäre eine Möglichkeit, setzt aber voraus das man eine Leere-Backup-TXT File auch hat.
Da eine solche Tabelle mal locker 5000-8000 Zeilen haben kann, brauchen wir dafür doch arg lange, um erst einmal eine leere Datei zu haben. Daher ja meine Frage hier danach, wie ich die Tabelle möglichst schnell von den Zahlen befreit bekomme.
Das sollte mit einer beliebigen (Skript-)sprache kein Problem sein. Mir erscheint das Neugenerieren einer leeren Tabelle allerdings nach wie vor weniger aufwändig zu sein, als das Löschen von Werten aus der befüllten Tabelle.
Tragt ihr die Werte da eigentlich händisch ein oder macht das die Prüfsoftware automatisch. In letzterem Fall wundert man sich eh, wieso die nicht ihr eigenes Textfile anlegt ;-)
Die Prüfsoftware schreibt diese Zahlen (Seriennummern) selbstständig in die TXT.
Würde auch gerne eine neue Tabelle neu generieren, Problem bei der Sache ist nur, das jede Zeile mit einer fortlaufenden Nummer im Hexerdezimal-Bereich anfangen muss.
Diese kann ich nicht generieren, sonder muss sie wieder per Hand eintragen, was bei 8000 Zeilen auch wieder in Arbeit ausartet.
Das Generieren von fortlaufenden Hex-Nummern kann - in der Programmiersprache Deiner Wahl - nicht wirklich ein Problem sein. Und das selbst dann, wenn keine Bibliotheksfunktion vorhanden ist, die z.B. positive 16-Bit- oder 32-Bit-Ganzzahlen zur Ausgabe in "Hex" umwandelt (Hex2ASCII oder wie auch immer sie üblicherweise heißt).
Nein - jetzt grabe ich mein Borland PASCAL nicht wieder aus. ![]()
Das setzt aber voraus das ich auch Programmieren kann, was bei mir nicht der Fall ist.
Und ich frage Euch ja ob Ihr mir helfen könnt ![]()
Nimm doch als Basis Excel. grober Umriss:
Erste Spalte für Lfd. Nummer.
Die Zellen dieser Spalte mit der Funktion DEZINHEX hinterlegen, und deine fortlaufenden Zahlen bis 8000 runterziehen.
Die restlichen Spalten dazufügen.
Abspeichern als csv-Textdatei.
Dann kannst Du in einem beliebigen Text-Editor die restlichen Sachen per Search&Replace anpassen.
Ne geht leider nicht per Search&Replace, da die geschriebenen Seriennummern ja nicht nach reinfolgen innerhalb der Spalten sortiert eingefügt werden. Die Seriennummern werden ja per Zufall gewählt, und in die nächst frei Zeile mit der XYZ-Hexerdezimalzahl vorne weg eingeschrieben.
Ich brauche eigentlich nichts weiter als ein Programm, mit welchem ich innerhalb eines Dokumentes definieren kann, ab welches Zeichen der Inhalt ausgetauscht werden soll, mit entsprechendem Inhalt.
Im Grunde so wie mir dem Programm [url=http://www.antp.be/software/renamer">Ant Renamer[/url], mit welchem ich bei 100 Dateien gleichzeitig, gewisse vorher definierte Zeichen an entsprechender Stelle löschen/hinzufügen etc. kann.
Kann ich so was nicht auch mittels einem Makros erreichen innerhalb von Word/Excel?
<a href="http://www.uptime-project.net/profile.php?uid=69952]
http://www.uptime-project.net" border="0" alt="http://img.uptime-project.net/img/8/69952.png" alt="UPTIME: DrAgOnBaLlOnE - http://www.uptime-project.net" border="0" title="http://img.uptime-project.net/img/8/69952.png" alt="UPTIME: DrAgOnBaLlOnE - http://www.uptime-project.net" border="0" onload="md_verif_size(this,'Zum Zoomen anklicken',1,400)"/>[/url]
| Zitat :
|
Ich dachte an dieses Beispiel. das leere Text-File.
Das kannst Du mit obiger Methode erzeugen.
Na dann bitte ich Dich mal, mir eine Schritt für Schritt Anleitung hier zu hinterlassen, da ich im Umgang mit Excel und Co. nicht sonderlich bewandert bin.
Wärst Du bitte so nett *liebkuck* ![]()
Hab grad kein Excel zur Hand. muss Dich auf morgen vertrösten. ![]()
Aber mit dem groben Umriss kannste ja vielleicht schon etwas spielen?
Also. nun mit Excel bewaffnet.
Zuerst erstellst du die benötigten Spalten und trägst schonmal 1 und 2 in die Dez-Spalte:
Dann prüfen, ob die Analysis-Tools integriert sind:

Dann die zwei Zellen in der Dez-Spalte markieren, am kleinen Punkt rechts unten anpacken und bis 8000 runterziehen:
Nun in der Hex-Spalte in Zelle 1 die Funktion hinterlegen.
Also einfach =DEZINHEX(A2) dort eintragen.
Auch hier wieder rechts unten anpacken und runterziehen bis zu den 8000. Jetzt hast du die Hex-Codes:
Dann einfach die nächsten drei Spalten mit Kommas, und die letzte Spalte mit Semikolons, nach gleichem Prinzip füllen:
Die benötigten Zellen markieren (Dez-Spalte auslassen), kopieren und in ein gescheiten Text-Editor einfügen:
Deine Kommas sind nun mit Tabs getrennt, die du per Suchen & Ersetzen natürlich beliebig verändern kannst.
Feddich ![]()
Eins fällt mir noch ein.
Du wolltest ja führende Nullen.
Also sprich:
<pre>0001 - 0001
.
.
.
0010 - 000A
.
.
.
8000 - 1F40
</pre>
Das kannst du auch recht einfach in einem Texteditor wie Textpad erledigen:
- Cursor in Zeile 1 an den Zeilenanfang setzen.
- Macro aufnehmen drücken
- 0 drücken - Pfeil nach unten drücken - Pos1/Home drücken
- Macro stoppen
Dann kannst du einfach:
- solange auf der Macro-Wiedergabe-Taste bleiben, bis die Hexcodes 4-stellig werden.
- Wieder nach Zeile 1. auf Macro-Wiedergabe bleiben, bis die Hexcodes 3-stellig weden.
- Wieder nach Zeile 1. auf Macro-Wiedergabe bleiben, bis die Hexcodes 2-stellig weden.
Das, zusammen mit dem Excel-Geklicke, ist insgesamt nicht mehr als ca. 5min Arbeit.![]()
| Zitat :
|
Oder einfach [URL=http://217.160.88.134/vorlage.php" >hier klicken[/url], das geht dann sogar noch schneller ![]()
Hat auch nicht mehr als 5 Minuten gedauert.
Hey. das ist nicht fair. ![]()
Nur die Zeilenumbrüche passen noch nicht so recht zur WINTEL - Welt. D.h. $0A (LF) reicht nicht in jedem Texteditor, sondern lieber CRLF ($0D$0A).
Isch 'abe gar kein Windows ;-) Hab's aber geändert.
Die spannende Frage ist, ob Signore Flyer überhaupt was damit anfangen kann oder möchte?
Der hat gefälligst was damit anzufangen, wo wir uns hier so ins Zeug legen.
)
fry. check mal PN übrigens. ![]()
Man dickes DANKE SCHÖN an Dich Saty, das hat super funktioniert mit Deiner Anleitung.
Hätte ich ohne deine Hilfe nie hinbekommen.
Super, echt, bin begeistert, komme aus dem verbeugen und verneinen nicht mehr heraus. *ächtsknack*
Und fry, auch an Dich ein dickes DANKE.
Wenn Du jetzt noch das Leerzeichen zwischen jeder Zeile entfernen würdest, wäre es perfekt!
| Zitat :
|
Done. Und damit die Linebreak-Geschichte wieder zurückgeändert ;-)
fry, kann ich das Script speichern, wie die nach Saty's Anleitung angelegte XLS auch gespeichert habe?
EDIT: Gerngeschehen. ![]()
Da PHP nur auf dem Server verarbeitet wird, hast du drei Möglichkeiten:
- Dir das file von fry schicken lassen, und zuhause nen Apache mit PHP hochziehen
- Dir das file von fry schicken lassen, und es auf Webspace mit PHP-Unterstützung ablegen
- Oder fry lässt es dort liegen, wo es gerade ist ;-)
OK, naja im Grunde hab ich ja jetzt meine Datei danke Deiner Anleitung, wäre nur schön gewesen wenn ich das Script auch so einfach hätte mit auf Arbeit nehmen können.
Naja bin jedenfalls sau zufrieden im Moment. Ihr seid echt spitze. Muss jetzt mal so gesagt werden.
Auf vielfachen Wunsch ![]()
<pre><?
if (is_numeric($lines))
{
if ($lines > 20000) $lines = 20000;
if ($lines <= 0) $lines = 0;
if (($fh = fopen("./vorlage.txt", "w" )) && ($lines > 0))
{
for($i=1;$i<=$lines;$i++)
{
fputs($fh, sprintf('s',strtoupper(dechex($i))).",\t,\t,\t,\t;\n" );
}
fclose($fh);
header("Content-Type: application/force-download\n" );
header("Content-Disposition: attachment; filename=vorlage.txt" );
readfile("./vorlage.txt" );
sleep(1);
@unlink("./vorlage.txt" );
exit;
}
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>TXT-File Vorlage</title>
</head>
<body>
<h3>Flyer's Dateivorlage generieren</h3>
<form method="post" action="<? echo basename($_SERVER['PHP_SELF']); ?>">
<p>
Anzahl der Zeilen? (max. 20000)
<input type="text" name="lines" value="8000" style="width:50px;" />
</p>
<input type="submit" value="Datei generieren" />
</form>
</body>
</html>
<?
}
?>
</pre>
Ein laufender Apache ist übrigens nicht zwingend notwendig, man kann PHP (sofern installiert) ja auch auf der Shell ausführen. Dann aber natürlich nur die Kurzform ohne das HTML-Geraffel:
<pre>#!/usr/bin/php -Cq[1];
if (!$lines) $lines = 8000;
if ($lines > 20000) $lines = 20000;
if ($lines <= 0) $lines = 0;
for($i=1;$i<=$lines;$i++)
{
echo sprintf('s',strtoupper(dechex($i))).",\t,\t,\t,\t;\n";
}
?>
</pre>
Windows-User lassen die erste (blaue) Zeile einfach weg und starten das Skript für eine Ausgabe von z.B. 250 Zeilen mit
<pre>php -q vorlage.php 250 > vorlage.txt</pre>
Linux-User machen's entweder genauso oder nutzen chmod. ![]()
dechex()
Und da sag einer nochmal, PHP wäre keine Programmiersprache. ![]()
Danke fry, siehe auch Mehl. ![]()
Es gibt 52 identifizierte und nicht identifizierte User. Zur Ansicht der Liste identifizierter User, Hier klicken.
Dieses Thema ist länger als 6 Monate inaktiv.
Bitte überprüfen Sie, ob Ihr beabsichtigter Kommentar noch einen Mehrwert bringt oder das Anlegen eines neuen Themas nicht besser wäre.

